这是我的编码:
views.py
def form_valid(self, form):
form.save()
return HttpResponseRedirect(reverse("departmentt_view"))
相关模板:
<form action="{% url Condition_view department_id patient_NO %}" method="post">
{% csrf_token %}
<input type="submit" value="Save"/>
当我点击保存时,它应该在admin.py中更新数据库并返回第一页departmentt_view
。但是,当我点击保存时,它返回空白(白页),但仍然指向相同的添加127.0.0.1:8000/Diablo/1/123456/Condition
任何人都可以帮助我。先谢谢你。
编辑程序:
view.py
def form_valid(self, request, department_id, patient_NO):
if request.method == 'POST':
form = ConditionForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse("departmentt_view"))
return(reverse("form_valid"))
urls.py
url(r'^diablo/(?P<department_id>\d+)/(?P<patient_NO>\d+)/Condition/$', 'diabloreb.views.form_valid', name='form_valid'),
更改为此代码后,我有另一个错误说could not import diablorab.views.form_valid
父模块不存在。
所以我改回了
url(r'^diablo/(?P<department_id>\d+)/(?P<patient_NO>\d+)/Condition/$', ConditionView.as_view(), name = 'Condition_view',),
当我更改为此网址时,我会获得相同的输出,其中只显示白页。
相关模板
<form action="." method="post">
{% csrf_token %}
<input type="submit" value="Save"/>
我完全迷失了。谁能帮我。 非常感谢你。
答案 0 :(得分:0)
尝试: -
<form action="." method="post">
{% csrf_token %}
<input type="submit" value="Save"/>
所以它提交到同一页面。
如果同一页面为127.0.0.1:8000/Diablo/1/123456/Condition
,则此网址似乎包含3个不同的参数。
你的urls.py正则表达式应该指向你的视图功能,例如: -
url(r'^Diablo/(?P<department_id>\d+)/(?P<patient_NO>\d+)/condition/$',
'yourapp.views.form_valid',
name='form_valid'),
您的form_valid
视图函数定义应该总共接受4个参数,如下所示: -
def form_valid(request, department_id, patient_NO):
form = YourForm()
if request.POST == 'POST':
form = YourForm(request.POST)
if form.is_valid():
# do whatever you else you need.
form.save()
return HttpResponseRedirect(reverse("departmentt_view"))
return(reverse("form_valid")
请注意,它并不像声明代码中显示的form.save()
那么简单。实际上,您需要确保定义并导入表单类(在我的示例代码中,YourForm
是我引用的表单类),以便您的视图函数可以使用它并执行类似{{1}的赋值这样你的表单类就会从提交表单的用户那里收到POST-ed变量(“POST请求”,可以这么说)。
<强> EDITED 强>
查看功能仅接受2个参数。