【问题标题】:Django form only sending GET requestsDjango 表单只发送 GET 请求
【发布时间】:2021-01-17 01:47:41
【问题描述】:

我有这个添加页面,它使用 django 表单来获取我试图存储在“任务”列表中并显示在 todo html 页面中的信息。 我相信我所有的语法都是正确的,但是当我提交表单时它没有显示任务列表。

在 cmd 上,每次我提交表单时它都会检测到一个 GET 请求,它不应该说 post 吗?

观看次数:

from django.shortcuts import render
from django import forms

tasks = []
class newTaskForm(forms.Form):
    task = forms.CharField(label="new task")
# Create your views here.
def index(request):
    return render(request, "tasks/todo.html", {
        "tasks": tasks
    })

def add(request):
    if request.method == "POST":
        form = newTaskForm(request.POST)
        if form.is_valid():
            task = form.cleaned_data["task"]
            tasks.append(task)
        else:
            return render(request, "tasks/add.html", {
                "form": form
            })
    return render(request, "tasks/add.html", {
        "form": newTaskForm
    })

添加:

{% extends "tasks/layout.html" %}

{% block body %}
    <form action="{% url 'tasks:add' %}">
        {% csrf_token %}
        {{ form }}
        <input type="submit">
    </form>
    <a href="{% url 'tasks:home' %}">Veiw list</a>
{% endblock %}

待办事项:

{% extends "tasks/layout.html" %}
{% block body %}
    <h1> To Do List</h1>
        <ul>
        {% for task in tasks %}
            <li> {{ task }}</li>
        {% endfor %}
        </ul>
    <a href="{% url 'tasks:add' %}">Add items</a>
{% endblock %}

【问题讨论】:

  • 您需要将method="post" 添加到您的form 标签中

标签: python django forms methods request


【解决方案1】:

正如@Iain Shelvington建议的那样,你需要把method="post"作为

{% block body %}
    <form method="post" action="{% url 'tasks:add' %}">
        {% csrf_token %}
        {{ form }}
        <input type="submit">
    </form>
    <a href="{% url 'tasks:home' %}">Veiw list</a>
{% endblock %}

【讨论】:

  • 哇,谢谢,我不敢相信我错过了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 2013-08-16
  • 2022-01-18
  • 2016-04-18
  • 1970-01-01
相关资源
最近更新 更多