0

这是我的编码:

视图.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

谁可以帮我这个事。提前谢谢你。

编辑程序:

视图.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"))

网址.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"/>

我完全迷路了。谁能帮我。太感谢了。

4

1 回答 1

0

尝试:-

<form action="." method="post">
    {% csrf_token %}
<input type="submit" value="Save"/>

所以它提交到同一页面。

如果同一个页面是127.0.0.1:8000/Diablo/1/123456/Condition,那么这个 url 中似乎有 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定义和导入您的表单类(在我的示例代码中,是我所指的表单类),以便您的视图函数可以使用它并执行分配,form = YourForm(request.POST)以便您的表单类接收 POST- ed 来自提交表单的用户的变量(可以说是“POST 请求”)。

已编辑

视图函数只接受 2 个参数。

于 2012-11-05T00:20:28.827 回答