亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

簡單解析Django框架中的表單驗證

2020-01-04 18:02:40
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了簡單解析Django框架中的表單驗證,Django是Python重多人氣框架中最為著名的一個,需要的朋友可以參考下

我們的搜索示例仍然相當地簡單,特別從數據驗證方面來講;我們僅僅只驗證搜索關鍵值是否為空。 然后許多HTML表單包含著比檢測值是否為空更為復雜的驗證。 我們都有在網站上見過類似以下的錯誤提示信息:

請輸入一個有效的email地址, foo' 并不是一個有效的e-mail地址。

請輸入5位數的U.S 郵政編碼, 123并非是一個有效的郵政編碼。

請輸入YYYY-MM-DD格式的日期。

請輸入8位數以上并至少包含一個數字的密碼。

關于JavaScript驗證

可以使用Javascript在客戶端瀏覽器里對數據進行驗證,這些知識已超出本書范圍。 要注意: 即使在客戶端已經做了驗證,但是服務器端仍必須再驗證一次。 因為有些用戶會將JavaScript關閉掉,并且還有一些懷有惡意的用戶會嘗試提交非法的數據來探測是否有可以攻擊的機會。

除了在服務器端對用戶提交的數據進行驗證(例如在視圖里驗證),我們沒有其他辦法。 JavaScript驗證可以看作是額外的功能,但不能作為唯一的驗證功能。

我們來調整一下search()視圖,讓她能夠驗證搜索關鍵詞是否小于或等于20個字符。 (為來讓例子更為顯著,我們假設如果關鍵詞超過20個字符將導致查詢十分緩慢)。那么該如何實現呢? 最簡單的方式就是將邏輯處理直接嵌入到視圖里,就像這樣:

 

 
  1. def search(request): 
  2. error = False 
  3. if 'q' in request.GET: 
  4. q = request.GET['q'
  5. if not q: 
  6. error = True 
  7. **elif len(q) > 20:** 
  8. **error = True** 
  9. else
  10. books = Book.objects.filter(title__icontains=q) 
  11. return render_to_response('search_results.html'
  12. {'books': books, 'query': q}) 
  13. return render_to_response('search_form.html'
  14. {'error': error}) 

現在,如果嘗試著提交一個超過20個字符的搜索關鍵詞,系統不會執行搜索操作,而是顯示一條錯誤提示信息。 但是,search_form.html里的這條提示信息是:”Please submit a search term.”,這顯然是錯誤的, 所以我們需要更精確的提示信息:

 

 
  1. <html> 
  2. <head> 
  3. <title>Search</title> 
  4. </head> 
  5. <body> 
  6. {% if error %} 
  7. <p style="color: red;">Please submit a search term 20 characters or shorter.</p> 
  8. {% endif %} 
  9. <form action="/search/" method="get"
  10. <input type="text" name="q"
  11. <input type="submit" value="Search"
  12. </form> 
  13. </body> 
  14. </html> 

但像這樣修改之后仍有一些問題。 我們包含萬象的提示信息很容易使人產生困惑: 提交一個空表單怎么會出現一個關于20個字符限制的提示? 所以,提示信息必須是詳細的,明確的,不會產生疑議。

問題的實質在于我們只使用來一個布爾類型的變量來檢測是否出錯,而不是使用一個列表來記錄相應的錯誤信息。 我們需要做如下的調整:

 

 
  1. def search(request): 
  2. **errors = []** 
  3. if 'q' in request.GET: 
  4. q = request.GET['q'
  5. if not q: 
  6. **errors.append('Enter a search term.')** 
  7. elif len(q) > 20: 
  8. **errors.append('Please enter at most 20 characters.')** 
  9. else
  10. books = Book.objects.filter(title__icontains=q) 
  11. return render_to_response('search_results.html'
  12. {'books': books, 'query': q}) 
  13. return render_to_response('search_form.html'
  14. {**'errors': errors** }) 

接著,我們要修改一下search_form.html模板,現在需要顯示一個errors列表而不是一個布爾判斷。

 

 
  1. <html> 
  2. <head> 
  3. <title>Search</title> 
  4. </head> 
  5. <body> 
  6. **{% if errors %}** 
  7. **<ul>** 
  8. **{% for error in errors %}** 
  9. **<li>{{ error }}</li>** 
  10. **{% endfor %}** 
  11. **</ul>** 
  12. **{% endif %}** 
  13. <form action="/search/" method="get"
  14. <input type="text" name="q"
  15. <input type="submit" value="Search"
  16. </form> 
  17. </body> 
  18. </html> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲一区精品| 国产精品丝袜一区二区三区| 91久久国产精品| 国产精品天天狠天天看| 欧美国产极速在线| 日韩电影免费在线观看| 亚洲最新中文字幕| 国产一区二区三区18| 国产91对白在线播放| 欧美日韩亚洲一区二区| 欧美黄色片在线观看| 国产欧美一区二区| 国模精品系列视频| 韩国视频理论视频久久| 成人在线视频网站| 欧美日韩国产中文精品字幕自在自线| 亚洲视频自拍偷拍| 欧美激情一区二区三级高清视频| 青青草99啪国产免费| 久久久久北条麻妃免费看| 亚洲老头同性xxxxx| 毛片精品免费在线观看| 成人自拍性视频| 精品国产一区av| 中文字幕日韩欧美在线| 日本精品一区二区三区在线| 国产亚洲欧洲高清一区| 国产精品www色诱视频| 欧美激情视频在线| 国产精品久久久久久久一区探花| 久久综合伊人77777蜜臀| 国产偷国产偷亚洲清高网站| 精品久久久一区| 欧美成人精品一区二区三区| 欧美日韩亚洲一区二| 激情av一区二区| 91社影院在线观看| 久久免费福利视频| 国产亚洲精品成人av久久ww| 色小说视频一区| 青草热久免费精品视频| 成人444kkkk在线观看| 久久精品视频在线| 欧美性猛交xxxx黑人| 国产精品久久久久久av福利软件| 欧美激情网友自拍| 91亚洲精品在线观看| 亚洲日韩中文字幕在线播放| 一本大道久久加勒比香蕉| 国产成+人+综合+亚洲欧洲| 精品中文字幕在线2019| 欧美老女人xx| 91国产精品电影| 国产精品美乳在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品中文字幕在线观看| 国产精品视频网| 成人www视频在线观看| 国产精品视频一| 亚洲free性xxxx护士hd| 最近2019中文字幕一页二页| 欧美日韩国产123| 日韩最新中文字幕电影免费看| 亚洲国产99精品国自产| 日韩一区视频在线| 美女性感视频久久久| 欧美日韩国产一区二区| 久久这里有精品| 97久久伊人激情网| 国产精品va在线播放| 欧美精品手机在线| 成人午夜在线视频一区| 亚洲精品色婷婷福利天堂| 久久精品2019中文字幕| 国产精品欧美风情| 97精品欧美一区二区三区| 在线精品国产成人综合| 欧美主播福利视频| 午夜精品久久久久久久白皮肤| 亚洲国产美女精品久久久久∴| 国产精品美女网站| 亚洲mm色国产网站| 国产精品96久久久久久| 92看片淫黄大片看国产片| 日韩欧美成人精品| 日韩亚洲国产中文字幕| 亚洲最大中文字幕| 久久九九精品99国产精品| 欧美日韩国产一区中文午夜| 欧美激情第一页xxx| 日韩精品中文字幕在线| 久久天天躁狠狠躁老女人| 欧美一级成年大片在线观看| 亚洲人午夜色婷婷| 欧美精品videos另类日本| 亚洲加勒比久久88色综合| 久久久久久久影院| 亚洲视频777| 91免费综合在线| 成人国产精品av| 黑丝美女久久久| 国产剧情久久久久久| 亚洲免费电影一区| 久久精品免费电影| 亚洲成人免费在线视频| 中文亚洲视频在线| 中文字幕免费精品一区高清| 主播福利视频一区| 成人午夜激情免费视频| 欧美日韩中文字幕日韩欧美| 国产亚洲一区二区精品| 韩剧1988免费观看全集| 亚洲成人av中文字幕| 欧美老女人性视频| 成人黄色免费在线观看| 亚洲天堂视频在线观看| 欧美成人黄色小视频| 成人免费淫片aa视频免费| 亚洲美女av在线| 伊人久久久久久久久久| 日韩在线视频中文字幕| 欧美影院成年免费版| 51精品在线观看| 亚洲欧美国产日韩中文字幕| 亚洲国产日韩欧美在线动漫| 国模视频一区二区| 欧美性猛交视频| 欧美日韩精品国产| 欧美丰满少妇xxxxx做受| 欧美成年人视频网站欧美| 日韩精品视频免费| 亚洲天堂男人的天堂| 亚洲第一网站男人都懂| 亚洲激情久久久| 国产ts一区二区| 日本精品久久久| 欧美精品videofree1080p| 欧美又大粗又爽又黄大片视频| 国产精品久久久久91| 久久精品国产亚洲精品| 国产精品久久色| 97超碰蝌蚪网人人做人人爽| 国产精品欧美激情在线播放| 欧美洲成人男女午夜视频| 日韩欧美一区二区在线| 国产一区二区三区18| 97久久国产精品| 亚洲视频在线免费看| 91av视频在线免费观看| 国产免费一区二区三区在线观看| 亚洲第一区中文字幕| 国产精品99久久久久久久久久久久| 久久视频国产精品免费视频在线| 久久综合免费视频影院| 欧美又大粗又爽又黄大片视频| 欧美一区二区三区免费视| 国产精品1区2区在线观看| 日韩精品免费在线视频| 日韩欧美在线一区| 国产亚洲人成a一在线v站| 最近2019年好看中文字幕视频| 日韩av免费网站| 亚洲人永久免费| 久久精品国产精品|