Django-提交链接
我有一个带有POST提交按钮的表单。我想在提交表单以及表单.u有效()时链接到新页面 在视图中还是在模板中创建链接更好?怎么做 view.py:Django-提交链接,django,django-forms,django-views,Django,Django Forms,Django Views,我有一个带有POST提交按钮的表单。我想在提交表单以及表单.u有效()时链接到新页面 在视图中还是在模板中创建链接更好?怎么做 view.py: from django.shortcuts import render_to_response from ezmapping.models import * from django.forms.models import modelformset_factory def setName(request): ezAppFormSet = mod
from django.shortcuts import render_to_response
from ezmapping.models import *
from django.forms.models import modelformset_factory
def setName(request):
ezAppFormSet = modelformset_factory(ezApp, extra=1, fields=('name'))
formset = ezAppFormSet(queryset=ezApp.objects.none())
if request.method == 'POST':
formset = ezAppFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
return render_to_response("project/manage_new.html", {'formset': formset, 'title': "New"}, context_instance=RequestContext(request))
template.html
{% extends "basemap.html" %}
{% block content %}
<table border="1">
<tr>
<td>
<h1>Define new App options</h1>
{% if formset.errors %}
<p style="color: red;">
Please correct the error{{ formset.errors|pluralize }} below.
</p>
{% endif %}
<form method="post" action="." encrypt="multipart/form-data">{% csrf_token %}
{{ formset.as_p }}
<input type="submit" value="Submit">
</form>
</td>
</tr>
</table>
{% endblock %}
{%extends“basemap.html”%}
{%block content%}
定义新的应用程序选项
{%if formset.errors%}
请更正下面的错误{formset.errors | pluralize}}。
{%endif%}
{%csrf_令牌%}
{{formset.as_p}}
{%endblock%}
当然可以。只需在您的条件forrequest.method==“POST”
中返回一个render\u to\u响应,或者可以选择将上下文和模板设置为变量,以将其交给render\u to\u响应:
意译:
def foo(request):
template = 'template1.html'
# form and formsets here set into `context` as a dictionary
if request.method == 'POST':
template = 'template2.html'
return render_to_response(template, context)
[编辑]
当我重新阅读您的问题时,如果您希望在表单有效的情况下重定向到其他视图,请返回一个HttpResponseRedirect。如果我正确理解您的问题 你的看法:
from django.shortcuts import render_to_response
from ezmapping.models import *
from django.forms.models import modelformset_factory
def setName(request):
ezAppFormSet = modelformset_factory(ezApp, extra=1, fields=('name'))
formset = ezAppFormSet(queryset=ezApp.objects.none())
if request.method == 'POST':
formset = ezAppFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
submit_link = True # 2*
else:
submit_link = False
return render_to_response("project/manage_new.html", {'submit_link': submit_link, 'formset': formset, 'title': "New"}, context_instance=RequestContext(request))
您的模板:
{% extends "basemap.html" %}
{% block content %}
<table border="1">
<tr>
<td>
<h1>Define new App options</h1>
{% if formset.errors %}
<p style="color: red;">
Please correct the error{{ formset.errors|pluralize }} below.
</p>
{% endif %}
<form method="post" action="." encrypt="multipart/form-data">{% csrf_token %}
{{ formset.as_p }}
<input type="submit" value="Submit">
</form>
{% if submit_link %}
<a href='/next/'>Data is saved, let's continue.</a>
{% endif %}
</td>
</tr>
</table>
{% endblock %}
您可以在视图中使用HttpResponseRedirect()而不是2*,如下所示:
from django.shortcuts import render_to_response
from ezmapping.models import *
from django.forms.models import modelformset_factory
def setName(request):
ezAppFormSet = modelformset_factory(ezApp, extra=1, fields=('name'))
formset = ezAppFormSet(queryset=ezApp.objects.none())
if request.method == 'POST':
formset = ezAppFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
next_link = u"/next/"
return HttpResponseRedirect(next_link)
return render_to_response("project/manage_new.html", {'formset': formset, 'title': "New"}, context_instance=RequestContext(request))
“当form.u是有效的()时”是什么意思?是否要验证此必需页面上的表单,还是希望该页面在成功验证前一页后获得重定向?
from django.shortcuts import render_to_response
from ezmapping.models import *
from django.forms.models import modelformset_factory
def setName(request):
ezAppFormSet = modelformset_factory(ezApp, extra=1, fields=('name'))
formset = ezAppFormSet(queryset=ezApp.objects.none())
if request.method == 'POST':
formset = ezAppFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
next_link = u"/next/"
return HttpResponseRedirect(next_link)
return render_to_response("project/manage_new.html", {'formset': formset, 'title': "New"}, context_instance=RequestContext(request))