在我的django项目中,我有一个' Field'用户可以通过表单添加的模型。
加载页面时调用的视图就是这样。
@login_requred
def index(request):
if request.method == 'POST':
# do 'Field' saving stuff
HttpResponseRedirect('/index/')
else:
# some code ...
return render(request, 'precisionagweb/index.html', {# stuff to render})
index.html中的表单是
<form id="addFieldForm" class="ui form" method="post">
form stuff
</form>
这种方法很好用,但我想通过创建一个专门用于添加&#39; Field&#39;的视图来改变结构,所以当我添加修改时,我可以避免过于复杂的索引函数定义并删除功能。
我的方法是创建一个这样的视图:
@login_required
def user_addField(request):
print 'made it here'
addField_form = addField(data=request.POST)
if addField_form.is_valid():
field = addField_form.save(commit=False)
field.user = request.user
field.save()
return HttpResponseRedirect('/index/')
从索引定义中删除POST内容,如下所示:
@login_requred
def index(request):
# some code
return render(request, 'precisionagweb/index.html', {# stuff to render})
并更改&#34;操作&#34;以这样的形式:
<form id="addFieldForm" class="ui form" method="post" action="addField/">
form stuff
</form>
我的网址配置如下:
urlpatterns = [
url(r'^signup/', views.signup),
url(r'^index/', views.index),
url(r'^addField/', views.user_addField),
url(r'^login/', views.user_login),
url(r'^logout/', views.user_logout),
]
这不起作用,因为我的新视图定义中的print语句永远不会打印到终端,因此视图永远不会被调用。我不知道该做什么,所以任何帮助都会非常感激。
答案 0 :(得分:1)
通常这样的视图看起来像这样:
def add_field(request):
form = AddFieldForm(data=request.POST or None)
if form.is_valid():
field = form.save(commit=False)
field.user = request.user
field.save()
return redirect('named_url')
return render(request, 'template.html', { 'form': form })
这背后的概念很简单:该视图负责向用户显示实际表单以及实际存储新对象。