Django 表单只发送 GET 请求

时间:2021-01-17 01:47:41

标签: python django forms methods request

我有这个添加页面,它使用 django 表单来获取我试图存储在“任务”列表中并显示在待办事项 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 %}

1 个答案:

答案 0 :(得分:2)

按照@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 %}