2015-10-13 29 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