python – 在Django上保存表单后重定向
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在Django上保存表单后重定向,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2883字,纯文字阅读大概需要5分钟。
内容图文
我正在努力扩展我们在完成官方Django教程后不再使用的webapp.
我希望添加的功能之一是用户自己添加民意调查的能力.
我正在努力让页面处理数据,然后重定向到索引页面(‘/ polls’).
当我以登录用户身份提交新民意调查时,我将返回到我的索引页面,该页面应该显示最近发布的民意调查,或者如果没有民意调查,则会返回“没有民意调查可用”的消息.
出于某种原因,我总是看到“没有可用的民意调查”,但是一旦我通过网站上的链接点击索引页面,它就会显示我的所有民意调查,包括我最近创建的民意调查,数据完好无损!
这有什么想法?我想我已经在下面列出了相关信息,但很乐意提供更多信息.在此先感谢您的任何帮助/建议.
views.py
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'
def get_queryset(self):
"""Return the last five published questions."""
return Poll.objects.order_by('-pub_date')[:15]
@login_required
def add_poll(request):
ChoiceFormSet = formset_factory(ChoiceForm, extra=3, min_num=2, validate_min=2)
if request.method == 'POST':
form = PollForm(request.POST)
formset = ChoiceFormSet(request.POST)
if all([form.is_valid(), formset.is_valid()]):
poll = form.save()
for inline_form in formset:
if inline_form.cleaned_data:
choice = inline_form.save(commit=False)
choice.question = poll
choice.save()
return render(request, 'polls/index.html', {})
else:
form = PollForm()
formset = ChoiceFormSet()
return render(request, 'polls/add_poll.html', {'form': form, 'formset': formset})
add_poll.html
{% extends 'polls/base.html' %}
{% block title %}Add Poll{% endblock %}
{% block body_block %}
<form role="form" id="poll_form" method="post" action="{% url 'polls:add_poll' %}">
<h2 class="form-signin-heading">Add a Poll</h2>
{% csrf_token %}
<table>
{{ form }}
{{ formset }}
</table>
<br/>
<button class="btn btn-primary" type="submit" name="submit">Create Poll</button>
</form>
{% endblock %}
的index.html
{% extends 'polls/base.html' %}
{% block body_block %}
{% if latest_question_list %}
<ul>
{% for poll in latest_question_list %}
<li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
{% endblock %}
urls.py
from django.conf.urls import patterns, url
from . import views
urlpatterns = patterns('',
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
url(r'^(?P<pk>\d+)/results/$', views.ResultsView.as_view(), name='results'),
url(r'^add_poll/$', views.add_poll, name='add_poll'),
url(r'^(?P<question_id>\d+)/vote/$', views.vote, name='vote'),
url(r'^profile_page/$', views.ProfileView.as_view(), name='profile_page'),
url(r'^edit_profile/$', views.edit_profile, name='edit_profile'),
)
解决方法:
保存表单时,您不会重定向.你正在使用空的民意调查数据返回’polls / index.html’,这就是为什么你总是得到“没有民意调查可用”的原因.所以不是这样的:
return render(request, 'polls/index.html', {})
试试这个:
return HttpResponseRedirect(reverse('polls:index'))
内容总结
以上是互联网集市为您收集整理的python – 在Django上保存表单后重定向全部内容,希望文章能够帮你解决python – 在Django上保存表单后重定向所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。