首先,search()檢視對於空字串的處理相當薄弱——僅顯示一條」please submit a search term.」的提示資訊。 若使用者要重新填寫表單必須自行點選「後退」按鈕, 這種做法既糟糕又不專業。如果在現實的案例中,我們這樣子編寫,那麼django的優勢將蕩然無存。
在檢測到空字串時更好的解決方法是重新顯示表單,並在表單上面給出錯誤提示以便使用者立刻重新填寫。 最簡單的實現方法既是新增else分句重新顯示表單,**如下:
(注意,將search_form()檢視也包含進來以便檢視)
這段**裡,我們改進來search()檢視:在字串為空時重新顯示search_form.html。 並且給這個模板傳遞了乙個變數error,記錄著錯誤提示資訊。 現在我們編輯一下search_form.html,檢測變數error:
search
****
**please submit a search term.
** ****
我們修改了search_form()檢視所使用的模板,因為search_form()檢視沒有傳遞error變數,所以在條用search_form檢視時不會顯示錯誤資訊。
通過上面的一些修改,現在程式變的好多了,但是現在出現乙個問題: 是否有必要專門編寫search_form()來顯示表單? 按實際情況來說,當乙個請求傳送至/search/(未包含get的資料)後將會顯示乙個空的表單(帶有錯誤資訊)。 所以,只要我們改變search()檢視:當使用者訪問/search/並未提交任何資料時就隱藏錯誤資訊,這樣就移去search_form()檢視以及對應的urlpattern。
def search(request):
error = false
if 'q' in request.get:
q = request.get['q']
if not q:
error = true
else:
books = bo程式設計客棧ok.objects.filter(title__icontains=q)
return render_to_response('search_results.html',
)return render_to_response('search_form.html',
)在改進後的檢視中,若使用者訪問/search/並且沒有帶有get資料,那麼他將看到乙個沒有錯誤資訊的表單; 如果使用者提交了乙個空表單,那麼它將看到錯誤提示資訊,還有表單; 最後,若使用者提交了乙個非空的值,那麼他將看到搜尋結果。
最後,我們再稍微改進一下這個表單,去掉冗餘的部分。 既然已經將兩個檢視與urls合併起來,/search/檢視管理著表單的顯示以及結果的顯示,那麼在search_form.www.cppcns.comhtml裡表單的action值就沒有必要硬編碼的指定url。 原先的**是這樣:
現在改成這樣:
action=」「意味著表單將提交給與當前頁面相同的url。 這樣修改之後,如果search()檢視不指向其它頁面的話,你將不必再修改action。
本文標題: 改進django中的表單的簡單方法
本文位址:
Django表單的簡單應用
views.py中的 10 表單物件的繫結 11 form userform req.post 12 資料的驗證 13if form.is valid 14 資料的獲取 生成物件 19 form userform 20return render to response index.html inde...
django表單處理(一) 最簡單的表單
是時候講 django 的表單處理了。最簡單的表單處理就是從輸入框中提取字串,交給後台進行資料處理並返回相應結果。本著簡單入門的原則,今天設計的表單就只有乙個文字框和乙個按鈕。在 templates 目錄下新建乙個 test01.html 檔案 接下來在 views.py 中新增下面的 from d...
Django中 form表單的使用
from django import forms 第一步 首先在models.py中定義乙個表單模型 class remarkform forms.form subject forms.charfield max length 100 label mail forms.emailfield labe...