如何确认Django表单已提交?
我在提交一个表单的时候,不想让页面跳转到成功的链接,而是想在页面上直接显示“表单已提交”的文字。有没有人知道我该怎么做呢?
3 个回答
0
在你验证完请求之后,修改你的视图,让它返回一个HttpResponse对象,并把你想要的文本作为参数传进去。下面是一个例子。
from django.http import HttpResponse
def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponse('Form has been submitted.')
0
老实说,这个问题并不是Django特有的。关键在于你是进行普通的表单提交,还是使用AJAX。
基本的思路是,使用AJAX把表单数据发送到你的提交接口。在Django的视图中,只需要更新你的数据模型,然后返回一个空的200响应,或者返回一些数据(可以是XML、JSON、小的HTML,或者你需要的任何格式)。这样,AJAX调用就可以在成功时填充一个成功消息的div
,如果收到的不是200的响应,就显示一个失败的消息。
4
在你的视图中:
if request.POST:
# validate form, do what you need
if form_is_valid():
message = 'Form has been submitted'
return render_to_response('path/to/template.html', {'message': message})
然后在你的模板中使用代码,比如:
{% if message %}
<h4>{{ message }}</h4>
{% endif %}