表单刷新提交 - Django

时间:2015-10-13 22:20:32

标签: python html django forms

我遇到与此处提到的问题类似的问题Very simple user input in django

我从上面的解决方案中获取了代码示例,但我仍然遇到同样的问题。当我点击calculate提交按钮时,表单就会清除,而不会将我带到结果视图。

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

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)

form.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),
]

1 个答案:

答案 0 :(得分:2)

提交表单后,您需要

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

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

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

并且所有这样的视图都返回与表单本身相同的页面。

使表单指向适当的视图(即result

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

并在calculator\urls.py

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

但是,如何在django(通常)中处理表单。

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

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

请花点时间仔细阅读专门处理Django's website

表格的优秀官方网页