Django 基于类的视图 CreateView 的示例
使用基于类的通用视图,从我们的模型创建 CRUD 视图非常简单和容易。通常,内置的 Django 管理员不够或不首选,我们需要推出自己的 CRUD 视图。在这种情况下,CBV 可以非常方便。
CreateView
类需要 3 件事 - 一个模型,要使用的领域和成功的 URL。
例:
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('^campaign/new/$', CampaignCreateView.as_view(), name='campaign_new'),
如果我们访问该网址,我们应该会看到一个包含我们选择的字段的表单。当我们提交时,它将尝试使用数据创建模型的新实例并保存它。成功后,用户将被重定向到成功 URL。出现错误时,将再次显示表单并显示错误消息。