django表單
get方法
在HelloWorld/HelloWorld下創(chuàng)建search.py
注意:中文前面的'u'
#-*- coding:utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render_to_response
#表單
def search_form(request):
return render_to_response('search_form.html')
#接收請求數(shù)據(jù)
def search(request):
request.encoding='utf-8'
if 'q' in request.GET:
message = u'你搜索的內容為:' + request.GET['q']
else:
message = u'你提交了空表單'
return HttpResponse(message)
在模板目錄templates中添加search_form.html表單
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>測試</title>
</head>
<body>
<form action="/search" method = "get">
<input type = 'text' name = "q">
<input type = 'submit" value = "搜索">
</form>
</body>
</html>
修改url.py
from django.conf.urls import *
from django.contrib import admin
from django.http import HttpResponse
from . import view,testdb,search #修改
urlpatterns = [
url(r'^$',view.hello),
url(r'^testdb$',testdb.testdb),
url(r'^search-form$',search.search-form), #新增
url(r'^search$',search.search), #新增
]
訪問search-form頁面
注意地址:http://127.0.0.1:8000/search-form逝慧,末尾千萬別加 .html 笤喳,不然會報找不到資源
image.png
隨便輸入搜索
image.png
post方法
創(chuàng)建模板
在templates下創(chuàng)建post.html
{{ % csrf_token %}}標簽 ,csrf全稱:Cross Site Request Forgery 幽钢,是Django預防偽裝提交功能陪拘,post提交的表格必須有這個標簽
{{ rlt }}是表格處理結果預留位
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>測試post</title>
</head>
<body>
<form action="/search-post" method = "post">
{% csrf_token %}
<input type = "text" name = "q">
<input type = "submit" value = "Submit">
</form>
<p>{{ rlt }}</p>
</body>
</html>
創(chuàng)建控制器
在HelloWorld/HelloWorld下創(chuàng)建search2.py
# -*- coding:utf-8 -*-
from django.shortcuts import render
from django.views.decorators import csrf
#接收POST請求數(shù)據(jù)
def search_post(request):
ctx = {}
if request.POST:
ctx['rlt'] = request.POST['q']
return render(request,"post.html",ctx)
修改視圖
修改urls.py
增加導入约计,增加匹配
# -*- coding:utf-8 -*-
from django.conf.urls import url
from django.contrib import admin
from django.http import HttpResponse
from . import view,testdb,search,search2
urlpatterns = [
url(r'^$',view.hello),
url(r'^testdb$',testdb.testdb),
url(r'^search-form$',search.search_form),
url(r'^search$',search.search),
url(r'^search-post$',search2.search_post),
]
訪問頁面
http://127.0.0.1:8000/search-post
是否已發(fā)現(xiàn)規(guī)律:url里的字段是urls.py表里 r^$ 中間的字段沦偎,
后面的search2是控制器代碼search2.py,search_post是search2.py里的一個方法吹缔,
至于模板post.html在控制器代碼search2.py里關聯(lián)到了“ return render(request,"post.html",ctx)
”
image.png
隨便輸入提交
image.png
此時的文檔目錄
image.png