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,并使用 reversereverse_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。出现错误时,将再次显示表单并显示错误消息。