日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django框架(7.Django中视图,url的配置)

發(fā)布時(shí)間:2024/9/30 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django框架(7.Django中视图,url的配置) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

視圖

? ?在Django中,通過瀏覽器去請(qǐng)求一個(gè)頁(yè)面時(shí),使用視圖函數(shù)來處理這個(gè)請(qǐng)求的,

? 視圖函數(shù)處理之后,要給瀏覽器返回頁(yè)面內(nèi)容

url匹配

  • urlpatterns?是固定寫法,它的值是?列表
  • 我們?cè)跒g覽器中輸入的路徑會(huì)和 urlpatterns?中的每一項(xiàng)順序進(jìn)行匹配

如果匹配成功,則直接引導(dǎo)到相應(yīng)的模塊

如果匹配不成功(把urlpattersns中的每一個(gè)都匹配過了),則直接返回404

  • urlpatterns中的元素?是 url ,url的第一個(gè)參數(shù)是:正則?
r 轉(zhuǎn)義 ^ 嚴(yán)格的開始 $ 嚴(yán)格的結(jié)果
  • 我們?cè)跒g覽器中輸入的路由?中?哪些部分參與正則匹配?

http://ip:port/path/?key=value,?其中的//ip:port/?和?get?post?參數(shù)不參與正則匹配

  • 如果和當(dāng)前的某一項(xiàng)匹配成,則引導(dǎo)到子應(yīng)用中繼續(xù)匹配,

如果匹配成功,則停止匹配返回相應(yīng)的視圖

如果匹配不成功,則繼續(xù)和后邊的工程中的url的每一項(xiàng)繼續(xù)匹配,直到匹配每一項(xiàng)

  • ?

?

視圖函數(shù)的使用

1.定義視圖函數(shù)

??視圖函數(shù)定義在views.py

??視圖的必須有一個(gè)參數(shù),一般叫request,視圖必須返回HttpResponse對(duì)象,HttpResponse中的參數(shù)內(nèi)容會(huì)顯示在瀏覽器?的頁(yè)面上。

from django.shortcuts import render from django.http import HttpResponse# Create your views here. # 1. 定義視圖函數(shù),返回HttpRequest對(duì)象 # 2. 進(jìn)行url配置,建立url地址和視圖的對(duì)應(yīng)關(guān)系 def index(request):# 進(jìn)行處理,和M和T進(jìn)行交互...return HttpResponse("這是網(wǎng)頁(yè)的進(jìn)行響應(yīng)")

?2.進(jìn)行url的配置? ? ?

? ( 目的建立地址根處理函數(shù)之間對(duì)應(yīng)的關(guān)系)

? ?一條URLconf包括url規(guī)則、視圖兩部分:

  • url規(guī)則使用正則表達(dá)式定義。
  • 視圖就是在views.py中定義的視圖函數(shù)。

需要兩步完成URLconf配置:

  • 1.在應(yīng)用中定義URLconf
  • 2.包含到項(xiàng)目的URLconf中

? ?? ①?應(yīng)用下面新建一個(gè)urls.py ,進(jìn)行配置 注意列表名別寫錯(cuò)了;

from django.conf.urls import url from booktest import views# 項(xiàng)目的urls文件 from django.urls import re_path'''通過re_path函數(shù)設(shè)置url路由的配置項(xiàng)正則匹配的是視圖函數(shù)如果路由里面沒有正則,則用 path''' urlpatterns = [re_path(r'^index$', views.index), # 建立/index和視圖index之間的關(guān)系 ]

? ?②在項(xiàng)目的文件夾下有urls.py 文件,進(jìn)行設(shè)置路由的配置項(xiàng),為urlpatterns列表增加項(xiàng)

from django.contrib import admin from django.urls import path, include, re_path# 項(xiàng)目的urls文件 '''通過re_path函數(shù)設(shè)置url路由的配置項(xiàng)包含booktest應(yīng)用中的urls文件路由里面沒有正則的話就用 path函數(shù)''' urlpatterns = [path('admin/', admin.site.urls),re_path(r'^', include('booktest.urls')) ]

3.請(qǐng)求訪問? ?

? ?運(yùn)行程序,訪問地址? ?127.0.0.1:8000/index, 就有視圖函數(shù)返回的字符串

? ?

路由請(qǐng)求的大概過程??

??請(qǐng)求者在瀏覽器地址欄中輸入url,請(qǐng)求到網(wǎng)站后,獲取url信息

? ?然后與編寫好的URLconf逐條匹配,如果匹配成功則調(diào)用對(duì)應(yīng)的視圖函數(shù),

? 如果所有的URLconf都沒有匹配成功,則返回404錯(cuò)誤。

?例如還有在一個(gè)應(yīng)用中還有其他的視圖函數(shù)

def index2(request):# 第二個(gè)視圖函數(shù)return HttpResponse("這是第二個(gè)試圖函數(shù)的響應(yīng)")

? ?直接在應(yīng)用的urls.py的路由配置項(xiàng)里面進(jìn)行添加(前提是這個(gè)應(yīng)用的views.py在整個(gè)項(xiàng)目里面已經(jīng)進(jìn)行了配置)

? ?注意:$的運(yùn)用? ?嚴(yán)格匹配開頭結(jié)尾, 如果不加的話,訪問index2的話就會(huì)訪問第一個(gè)index路由

from booktest import views# 項(xiàng)目的urls文件 from django.urls import re_path'''通過re_path函數(shù)設(shè)置url路由的配置項(xiàng)正則匹配的是視圖函數(shù)如果路由里面沒有正則,則用 path''' urlpatterns = [re_path(r'^index$', views.index), # 建立/index和視圖index之間的關(guān)系re_path(r'^index2$', views.index2) ]

?還有,如果進(jìn)行路由設(shè)計(jì)的時(shí)候,地址的最后面有斜杠,那么在進(jìn)行路由配置的時(shí)候就要加上?

總結(jié)

以上是生活随笔為你收集整理的Django框架(7.Django中视图,url的配置)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。