欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

改進Django中的表單的簡單方法

 更新時間:2015年07月17日 17:31:39   投稿:goldensun  
這篇文章主要介紹了改進Django中的表單的簡單方法,Django是Python重多人氣框架中最著名的一個,需要的朋友可以參考下

首先,search()視圖對于空字符串的處理相當薄弱——僅顯示一條”Please submit a search term.”的提示信息。 若用戶要重新填寫表單必須自行點擊“后退”按鈕, 這種做法既糟糕又不專業(yè)。如果在現實的案例中,我們這樣子編寫,那么Django的優(yōu)勢將蕩然無存。

在檢測到空字符串時更好的解決方法是重新顯示表單,并在表單上面給出錯誤提示以便用戶立刻重新填寫。 最簡單的實現方法既是添加else分句重新顯示表單,代碼如下:

from django.http import HttpResponse
from django.shortcuts import render_to_response
from mysite.books.models import Book

def search_form(request):
  return render_to_response('search_form.html')

def search(request):
  if 'q' in request.GET and request.GET['q']:
    q = request.GET['q']
    books = Book.objects.filter(title__icontains=q)
    return render_to_response('search_results.html',
      {'books': books, 'query': q})
  else:
    **return render_to_response('search_form.html', {'error': True})**

(注意,將search_form()視圖也包含進來以便查看)

這段代碼里,我們改進來search()視圖:在字符串為空時重新顯示search_form.html。 并且給這個模板傳遞了一個變量error,記錄著錯誤提示信息。 現在我們編輯一下search_form.html,檢測變量error:

<html>
<head>
  <title>Search</title>
</head>
<body>
  **{% if error %}**
    **<p style="color: red;">Please submit a search term.</p>**
  **{% endif %}**
  <form action="/search/" method="get">
    <input type="text" name="q">
    <input type="submit" value="Search">
  </form>
</body>
</html>

我們修改了search_form()視圖所使用的模板,因為search_form()視圖沒有傳遞error變量,所以在條用search_form視圖時不會顯示錯誤信息。

通過上面的一些修改,現在程序變的好多了,但是現在出現一個問題: 是否有必要專門編寫search_form()來顯示表單? 按實際情況來說,當一個請求發(fā)送至/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 = Book.objects.filter(title__icontains=q)
      return render_to_response('search_results.html',
        {'books': books, 'query': q})
  return render_to_response('search_form.html',
    {'error': error})

在改進后的視圖中,若用戶訪問/search/并且沒有帶有GET數據,那么他將看到一個沒有錯誤信息的表單; 如果用戶提交了一個空表單,那么它將看到錯誤提示信息,還有表單; 最后,若用戶提交了一個非空的值,那么他將看到搜索結果。

最后,我們再稍微改進一下這個表單,去掉冗余的部分。 既然已經將兩個視圖與URLs合并起來,/search/視圖管理著表單的顯示以及結果的顯示,那么在search_form.html里表單的action值就沒有必要硬編碼的指定URL。 原先的代碼是這樣:

<form action="/search/" method="get">

現在改成這樣:

<form action="" method="get">

action=”“意味著表單將提交給與當前頁面相同的URL。 這樣修改之后,如果search()視圖不指向其它頁面的話,你將不必再修改action。

相關文章

  • python通過openpyxl生成Excel文件的方法

    python通過openpyxl生成Excel文件的方法

    這篇文章主要介紹了python通過openpyxl生成Excel文件的方法,實例分析了openpyxl的安裝與使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • Django對models里的objects的使用詳解

    Django對models里的objects的使用詳解

    今天小編就為大家分享一篇Django對models里的objects的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 如何使用七牛Python SDK寫一個同步腳本及使用教程

    如何使用七牛Python SDK寫一個同步腳本及使用教程

    七牛云存儲的 Python 語言版本 SDK(本文以下稱 Python-SDK)是對七牛云存儲API協(xié)議的一層封裝,以提供一套對于 Python 開發(fā)者而言簡單易用的開發(fā)工具本篇文章給大家介紹如何使用七牛Python SDK寫一個同步腳本及使用及使用教程,需要的朋友可以參考下
    2015-08-08
  • Python實現的查詢mysql數據庫并通過郵件發(fā)送信息功能

    Python實現的查詢mysql數據庫并通過郵件發(fā)送信息功能

    這篇文章主要介紹了Python實現的查詢mysql數據庫并通過郵件發(fā)送信息功能,可實現Python針對mysql的查詢與宕機信息通過郵件發(fā)送的相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python實現批量備份交換機配置+自動巡檢

    Python實現批量備份交換機配置+自動巡檢

    這篇文章主要為大家詳細介紹了Python實現批量備份交換機配置+自動巡檢的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • Anaconda安裝opencv庫詳細圖文教程

    Anaconda安裝opencv庫詳細圖文教程

    這篇文章主要給大家介紹了關于Anaconda安裝opencv庫詳細圖文教程的相關資料,安裝Anaconda后,你可以使用conda命令在Anaconda環(huán)境中安裝OpenCV,文中有詳細步驟,需要的朋友可以參考下
    2023-07-07
  • python生成并處理uuid的實現方式

    python生成并處理uuid的實現方式

    這篇文章主要介紹了python生成并處理uuid的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python繪制浪漫星空的示例代碼

    Python繪制浪漫星空的示例代碼

    Python的turtle是一個基于tkinter的Python圖形庫,可以幫助初學者輕松地理解和繪制圖形,本文就來通過turtle繪制一個浪漫的星空動畫吧
    2023-09-09
  • 寫一個Python腳本自動爬取Bilibili小視頻

    寫一個Python腳本自動爬取Bilibili小視頻

    這篇文章主要介紹了寫一個 Python 腳本自動爬取 Bilibili 小視頻的示例代碼,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python簡單實現自動刪除目錄下空文件夾的方法

    Python簡單實現自動刪除目錄下空文件夾的方法

    這篇文章主要介紹了Python簡單實現自動刪除目錄下空文件夾的方法,涉及Python針對文件與目錄的讀取、判斷、刪除等相關操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論