基于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获取成功网址。
现在,我们需要为此视图创建一个模板。模板应以格式命名<appname>/<modelname>_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。出现错误时,将再次显示该表格以及错误消息。