2015-10-13 30 views
2

我有一个类似的问题在这里提到的,Very simple user input in django表刷新上提交 - 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 \网址.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), 
] 
+0

检查你的第二个网址中'urls.py'。它与上面的一样 – Pynchia

回答

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

+1

解决了我的问题。我会研究处理表单和调整代码的正确方法。感谢您指出了这一点。 – Mac