POST请求无法传递至视图函数,提交表单返回空结果求助
问题:提交表单后返回空结果,请求始终为GET方法
我遇到了一个麻烦:在填写new_entry页面的表单提交后,跳转的页面没有显示新添加的条目,反而返回空结果。而且控制台只打印了get,日志显示请求一直是GET方法,根本没有触发POST处理逻辑。
具体现象
new_entry页面:显示正常的表单页面,包含输入文本框和“add entry”提交按钮- 提交表单后跳转的页面:本该显示包含新条目的主题详情页,但实际是空白的条目区域
- 控制台仅输出
get,日志记录:
Django version 1.11.13, using settings 'learning_log.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. this is get method [11/May/2018 02:26:48] "GET /new_entry/3 HTTP/1.1" 200 461
相关代码片段
views.py 中的 new_entry 函数
def new_entry(request, topic_id): """Add a new entry for a particular topic.""" topic = Topic.objects.get(id=topic_id) if request.method != 'POST': #No data submitted, create a blank form. form = EntryForm() print("get") # test point else: # POST data submittd; process data form = EntryForm(data=request.POST) print('Post') # test point # print('request: ', request) if form.is_valid(): new_entry = form.save(commit=False) new_entry.topic = topic new_entry.save() return HttpResponseRedirect(reverse('learning_logs:topic', args=[topic_id])) context = {'topic':topic, 'form':form} return render(request, 'learning_logs/new_entry.html', context )
new_entry.html 表单代码
{% block content %} <p> <a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a> </p> <p>Add a new entry:</p> <form action="{% url "learning_logs:topic" topic.id %}" method="POST"> {% csrf_token %} {{ form.as_p }} <button name="button">add entry</button> </form> {% endblock content %}
topics.html 代码
{% extends "learning_logs/base.html" %} {% block content %} <p>Topics</p> <ul> {% for topic in topics %} <a href="{% url "learning_logs:topic" topic.id %}">{{ topic }}</a> <br> {% empty %} <li>No topics have been added yet.</li> {% endfor %} </ul> <a href="{% url "learning_logs:new_topic" %}">Add a new topic:</a> {% endblock content %}
forms.py 代码
from django import forms from .models import Topic, Entry class TopicForm(forms.ModelForm): class Meta: model = Topic fields = ['text'] labels = {'text':''} class EntryForm(forms.ModelForm): class Meta: model = Entry fields = ['text'] labels = {'text':''} widgets = {'text':forms.Textarea(attrs={'cols':80})}
urls.py 配置
urlpatterns = [ #Home Page url(r'^$', views.index, name='index'), # Show all the topics url(r'^topics/$', views.topics, name='topics'), # Detail pate for a single topics url(r'^topic/(?P<topic_id>\d+)/$', views.topic, name='topic'), # Page for adding a new topic url(r'^new_topic/$', views.new_topic, name='new_topic'), # page for adding a new new Entry url(r"^new_entry/(?P<topic_id>\d+)$", views.new_entry, name='new_entry'), ]
想请教一下,我的代码哪里出问题了?
内容的提问来源于stack exchange,提问作者Wizard
相关产品推荐
相关产品推荐

