You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:13:09