Django - 我应该为我的案例使用什么 CBV?
Django - What CBV should I use for my case?
首先,我想说我真的是 Django 的新手,正在为我的项目寻找一些架构建议。
我有一个如下所示的前端模板:
当用户点击"save"按钮时,输入字段中的数据需要保存到数据库中。用户将不断用新值更新这些输入字段,并且会出现 none 这些数据存在于数据库中的情况,因为用户尚未填写它们。问题是,我不确定使用什么查看方法。
views.py
class BhaCreateView(CreateView):
model = models.bha
fields = '__all__'
context_object_name = 'bha'
template_name = 'base/bha.html'
这只是一个非常粗略的代码,我只是在这里问一个问题。
我知道有很多种基于 class 的视图,例如 DetailView、ListView、CreateView、UpdateView...等等。我应该使用哪一个或哪些?我在想我需要 CreateView 和 UpdateView 的某种组合,因为用户会将新信息更新到 BHA 部分,但仍然有可能根本没有首先插入信息。
我应该怎么做?
通常你应该同时拥有 CreateView
和 UpdateView
。
因此,如果用户最初想通过单击 link Add new BHA
创建 BHA,他应该被引导至 url yourDomain.com/bha/create
,它将由CreateView
。当他保存时,他应该被重定向到另一个 url yourDomain.com/bha/1/edit
,它将由 UpdateView
处理,其中 url 中的 1
是主要的新创建的数据库条目的键。只能通过 url 对该实例进行更新。
两个视图通常可以使用大致相同的模板,但是 UpdateView
最初会使用 url 中的 id 标识的模型实例中的数据填充表单。
因此您的 url 配置可能如下所示:
urlpatterns = [
url(r'^bha/', include([
url(r'^create/$', BHACreateView.as_view(), name='create'),
url(r'^(?P<pk>\d+)/edit/$', BHAUpdateView.as_view(), name='update'),
], namespace='bha')),
# other urls ...
]
首先,我想说我真的是 Django 的新手,正在为我的项目寻找一些架构建议。
我有一个如下所示的前端模板:
当用户点击"save"按钮时,输入字段中的数据需要保存到数据库中。用户将不断用新值更新这些输入字段,并且会出现 none 这些数据存在于数据库中的情况,因为用户尚未填写它们。问题是,我不确定使用什么查看方法。
views.py
class BhaCreateView(CreateView):
model = models.bha
fields = '__all__'
context_object_name = 'bha'
template_name = 'base/bha.html'
这只是一个非常粗略的代码,我只是在这里问一个问题。 我知道有很多种基于 class 的视图,例如 DetailView、ListView、CreateView、UpdateView...等等。我应该使用哪一个或哪些?我在想我需要 CreateView 和 UpdateView 的某种组合,因为用户会将新信息更新到 BHA 部分,但仍然有可能根本没有首先插入信息。
我应该怎么做?
通常你应该同时拥有 CreateView
和 UpdateView
。
因此,如果用户最初想通过单击 link Add new BHA
创建 BHA,他应该被引导至 url yourDomain.com/bha/create
,它将由CreateView
。当他保存时,他应该被重定向到另一个 url yourDomain.com/bha/1/edit
,它将由 UpdateView
处理,其中 url 中的 1
是主要的新创建的数据库条目的键。只能通过 url 对该实例进行更新。
两个视图通常可以使用大致相同的模板,但是 UpdateView
最初会使用 url 中的 id 标识的模型实例中的数据填充表单。
因此您的 url 配置可能如下所示:
urlpatterns = [
url(r'^bha/', include([
url(r'^create/$', BHACreateView.as_view(), name='create'),
url(r'^(?P<pk>\d+)/edit/$', BHAUpdateView.as_view(), name='update'),
], namespace='bha')),
# other urls ...
]