python - 提交时刷新表单 - Django

标签 python html django forms

我有一个与这里提到的类似的问题,Very simple user input in django

我已经从上述解决方案中获取了代码示例,但仍然遇到同样的问题。当我单击“计算”提交按钮时,表单会被清除,而不会进入结果 View 。

我确信这是一个小问题,但我已经坚持了一段时间,并且需要一些帮助。我将在下面发布相关代码:

views.py:

from django.shortcuts import render
from django.http import HttpResponse


def index(request):
    return render(request, 'form.html')


def result(request):
    if request.method == "POST":
        number1 = request.POST.get("firstnumber", None)
        number2 = request.POST.get("secondnumber", None)
        answer = number1 + number2
        message = "The result of number1 + number2 is " + answer
    else:
        message = "You submitted an empty form"
    return HttpResponse(message)

表单.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <form method="POST" action="/calculator/">
        {% csrf_token %}
        Enter number 1: <br>
        <input type="text" name="firstnumber">
        <br>
        Enter number 2: <br>
        <input type="text" name="secondnumber">
        <br>
        <input type="submit" value="Calculate">
    </form>

</body>
</html>

计算器\urls.py:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^$', views.result, name='result'),
]

exercise4\urls.py:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^calculator/', include('calculator.urls')),
    url(r'^admin/', admin.site.urls),
]

最佳答案

提交表单后,您将进入

<form method="POST" action="/calculator/">

这是 index View ,因为在 calculator\urls.py 中你有

url(r'^$', views.index, name='index'),

所有此类 View 所做的就是返回与表单本身相同的页面。

使表单指向适当的 View (即结果)

<form method="POST" action="/calculator/result/">

calculator\urls.py

url(r'^result/$', views.result, name='result'),

但是,这不是 django 中处理表单的方式(通常)。

通常,表单由同一 View 处理,该 View 会区分是使用 HTTP POST 方法还是使用 HTTP GET 调用。

在前一种情况下, View 处理提交的数据(执行数据验证作为第一步)。在后者中,它返回带有表单的页面(即您的索引 View 现在正在执行的操作)。

请花时间仔细浏览 Django's website 上专门用于处理表单的优秀官方页面。

关于python - 提交时刷新表单 - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113603/

相关文章:

python - startapp 与 manage.py 在另一个目录中创建应用程序

Django:无法使用映射到不同模型的字段创建模型

python - 通过 REST API 使用 Django 与 salesforce 对话

python - 升级到更新的 Python 版本 - 性能改进?

python - 使用 matplotlib savefig 保存文件对象,从多个 svg 图形创建 tar 文件

javascript - Css 从 .data() 中选择空数组

css - Google Chrome 中的 Div 位移

html - 如何将 "lightbox"一个不可点击的 div 消失? [没有JS]

Python, Mechanize - 按名称查找表格的问题

python - 覆盖/清除先前的控制台行