Django保存:在admin.py上单击保存数据库不更新时

时间:2012-11-04 23:47:23

标签: django django-templates django-admin django-views

这是我的编码:

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"/>

我完全迷失了。谁能帮我。 非常感谢你。

1 个答案:

答案 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个参数。