1.HTTP請求html
HTTP協議以"請求-回覆"的方式工做。正則表達式
客戶發送請求時,能夠在請求中附加數據。服務器經過解析請求,就能夠得到客戶傳來的數據,並根據URL來提供特定的服務。django
(1)GET方法服務器
在項目中HelloWorld/HelloWorld下建立一個 search.py 文件,用於接收用戶的請求函數
1 from django.http import HttpResponse 2 from django.shortcuts import render_to_response 3 4 # 表單 5 def search_form(request): 6 return render_to_response('search_form.html') 7 8 # 接收請求數據 9 def search(request): 10 request.encoding='utf-8' 11 if 'q' in request.GET: 12 message = '你搜索的內容爲:' + request.GET['q'] 13 else: 14 message = '你提交了空表單' 15 return HttpResponse(message)
在模板目錄 templates 中添加 search_form.html 表單post
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>runoob.com</title> 6 </head> 7 <body> 8 <form action="/search" method="get"> 9 <input type="text" name="q"> 10 <input type="submit" value="搜索"> 11 </form> 12 </body> 13 </html>
urls.py 規則修改成以下形式url
1 from django.conf.urls import url 2 from . import view, search, search2 3 4 # 匹配模式 統一資源定位 5 urlpatterns = [ 6 # url(r'^$', view.hello) 7 url(r'^hello$', view.hello), 8 url(r'^search-form$', search.search_form), 9 url(r'^search$', search.search), 10 url(r'^search-post$', search2.search_post) 11 ] 12 # 正則表達式 ^$表示匹配一行的首和尾
訪問地址 http://127.0.0.1:8000/search-form 或是http://localhost:8000/search-form並搜索spa
注:傳不上圖片啊code
(2)POST方法orm
上面使用了GET方法。視圖顯示和請求處理分紅兩個函數處理。
提交數據時更經常使用POST方法。下面使用該方法,並用一個URL和處理函數,同時顯示視圖和處理請求。
在tmplate 建立 post.html
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>runoob.com</title> 6 </head> 7 <body> 8 <form action="/search-post" method="post"> 9 {% csrf_token %} 10 <input type="text" name="q"> 11 <input type="submit" value="Submit"> 12 </form> 13 14 <p>{{ rlt }}</p> 15 </body> 16 </html>
在模板的末尾,增長一個 rlt 記號,爲表格處理結果預留位置。
表格後面還有一個{% csrf_token %}的標籤。
csrf 全稱是 Cross Site Request Forgery。
這是Django提供的防止假裝提交請求的功能。POST 方法提交的表格,必須有此標籤。
在HelloWorld目錄下新建 search2.py 文件並使用 search_post 函數來處理 POST 請求
1 from django.shortcuts import render 2 from django.views.decorators import csrf 3 4 # 接收POST請求數據 5 def search_post(request): 6 ctx = {} 7 if request.POST: 8 ctx['rlt'] = request.POST['q'] 9 return render(request, "post.html", ctx)
urls.py 規則修改成以下形式
1 from django.conf.urls import url 2 from . import view, search, search2 3 4 # 匹配模式 統一資源定位 5 urlpatterns = [ 6 # url(r'^$', view.hello) 7 url(r'^hello$', view.hello), 8 url(r'^search-form$', search.search_form), 9 url(r'^search$', search.search), 10 url(r'^search-post$', search2.search_post) 11 ] 12 # 正則表達式 ^$表示匹配一行的首和尾
訪問 http://localhost:8000/search-post 顯示結果
注:這次圖片沒法上傳
2. Requset對象
更多與HttpRequest對象的信息參看 http://www.runoob.com/django/django-form.html