基于Django类的视图:CreateView的示例

示例

使用基于类的通用视图,从我们的模型创建CRUD视图非常简单。通常,内置Django管理员还不够或不受欢迎,我们需要滚动自己的CRUD视图。在这种情况下,CBV可能非常方便。

本CreateView类需要三样东西-一个模型,该领域的使用和成功的网址。

例:

from django.views.generic import CreateView 
from .models import Campaign

class CampaignCreateView(CreateView):
    model = Campaign
    fields = ('title', 'description')
    
    success_url = "/campaigns/list"

创建成功后,用户将被重定向到success_url。我们还可以get_success_url改为定义一个方法,并使用reverse或reverse_lazy获取成功网址。

现在,我们需要为此视图创建一个模板。模板应以格式命名<app name>/<model name>_form.html。型号名称必须大写。例如,如果我的应用程序名称为dashboard,则对于上述创建视图,我需要创建一个名为的模板dashboard/campaign_form.html。

在模板中,form变量将包含表单。这是模板的示例代码:

<form action="" method="post">
    {% csrf_token %}
    {{form.as_p}}
    <input type="submit" value="Save" />
</form>

现在是时候将视图添加到我们的url模式中了。

url('^campaign/new/$', CampaignCreateView.as_view(), name='campaign_new'),

如果访问URL,则应该看到一个包含所选字段的表单。当我们提交时,它将尝试使用数据创建模型的新实例并将其保存。成功后,用户将被重定向到成功URL。出现错误时,将再次显示该表格以及错误消息。