我有一个与这里提到的类似的问题,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/