django學(xué)習(xí)5

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'你搜索的內(nèi)容為:' + 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 ,不然會報(bào)找不到資源

image.png

隨便輸入搜索


image.png

post方法

創(chuàng)建模板

在templates下創(chuàng)建post.html
{{ % csrf_token %}}標(biāo)簽 ,csrf全稱:Cross Site Request Forgery ,是Django預(yù)防偽裝提交功能,post提交的表格必須有這個(gè)標(biāo)簽
{{ rlt }}是表格處理結(jié)果預(yù)留位

<!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
增加導(dǎo)入,增加匹配

# -*- 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里的一個(gè)方法,
至于模板post.html在控制器代碼search2.py里關(guān)聯(lián)到了“ return render(request,"post.html",ctx)

image.png

隨便輸入提交


image.png

此時(shí)的文檔目錄

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容