欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解django中url路由配置及渲染方式

 更新時(shí)間:2019年02月25日 08:28:51   作者:不打烊的熱情  
這篇文章主要介紹了詳解django中url路由配置及渲染方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

今天我們學(xué)習(xí)如何配置url、如何傳參、如何命名、以及渲染的方式,內(nèi)容大致有以下幾個(gè)方面。

  • 創(chuàng)建視圖函數(shù)并訪問(wèn)
  • 創(chuàng)建app
  • django中url規(guī)則
  • 捕獲參數(shù)
  • 路徑轉(zhuǎn)換器
  • 正則表達(dá)式
  • 額外參數(shù)
  • 渲染方式

創(chuàng)建視圖并訪問(wèn)

項(xiàng)目中自帶的Python文件中,并沒(méi)有帶有視圖,因此我們自己創(chuàng)建一個(gè),通常,我們把視圖命名views.py。

然后在views.py中,導(dǎo)入頭文件

from django.http import HttpResponse

然后我們?cè)趘iews.py中,寫一些Python函數(shù),用來(lái)訪問(wèn)

def hello(request):             /*request用戶的請(qǐng)求 */
return HttpResponse(‘hello,歡迎來(lái)到django')

在url.py中為視圖函數(shù)配置路由

from django.urls import path
from . import views

urlpatterns = [
  path('hello',hello),    
]

運(yùn)行項(xiàng)目,如果上傳方式是Ctrl+S的話,記得上傳之后再運(yùn)行,成功后

瀏覽器輸入 127.0.0.1:8000/hello 即可訪問(wèn)到

創(chuàng)建app

創(chuàng)建APP的方式不只一種,在虛擬機(jī)里可以創(chuàng)建,也可以在pycharm里創(chuàng)建

命令為:Python manage.py startapp appname

在虛擬機(jī)里創(chuàng)建完,要在pycharm中下載下來(lái)

在pycharm中創(chuàng)建:

方式一:

項(xiàng)目運(yùn)行成功后,在terminal里面找到本項(xiàng)目,輸入命令 Python manage.py startapp appname

如果沒(méi)有連接本地,則需要重新連接

方式二:

tool ----> run manage.py projectname

  

startapp appname

此方法也需要下載下來(lái)

下載完成后,創(chuàng)建的app就出現(xiàn)了。

url規(guī)則

1、網(wǎng)址組成

網(wǎng)址:全球統(tǒng)一資源定位符

https://www.i.cnblogs.com/EditPosts.aspx?postid=10423125

這是本文網(wǎng)址,做個(gè)栗子吧

https://www.i.cnblogs.com/EditPosts.aspx?postid=10423125

            協(xié)議 域名 路徑 參數(shù)

django只搜索路徑部分,與其他都無(wú)關(guān)

2、django的路由系統(tǒng)

當(dāng)一個(gè)請(qǐng)求來(lái)到

1、首先到項(xiàng)目目錄下,url.py里查找路由規(guī)則

2、跟urlconf模塊,里面定義了urlpatterns變量

3、按順序運(yùn)行每一個(gè),到第一個(gè)匹配的模式停止

4、一旦匹配,django導(dǎo)入并調(diào)用給定的視圖

5、如果沒(méi)有匹配到,或者中間出錯(cuò),則返回404

3、path里參數(shù)的含義

path(route,view,kwargs=None,name=None)

route : (必須有)是一個(gè)字符串的url規(guī)則

view : (必須有)是個(gè)視圖

kwargs :(可有可無(wú))額外參數(shù),是字典類型,傳遞給view

name :(可有可無(wú))url名字

4、在url中捕獲參數(shù)

尖括號(hào) < 參數(shù) > 可以捕獲參數(shù),傳遞給視圖

本來(lái)捕獲的值是字符串

如果要捕獲兩個(gè)參數(shù),尖括號(hào)間可用/斜杠,也可用-連接符,但訪問(wèn)要一致

5、路徑轉(zhuǎn)化器

如果想要讓捕獲的參數(shù)符合條件,那么我們會(huì)用到路徑轉(zhuǎn)化器

符號(hào)是冒號(hào) : eg:<int:age>

常用的路徑轉(zhuǎn)化器

  • int : 匹配任意整數(shù)
  • path : 匹配任意非空字符
  • str : 匹配除了 / 路徑分隔符外所有字符串
  • uuid : 格式化id
  • sulg : 匹配任意ASCII字符和連字符及下劃線

6、正則表達(dá)式

前面我們學(xué)習(xí)到路徑轉(zhuǎn)化器,但是有時(shí)候我們的轉(zhuǎn)化器并不能夠完全滿足我們捕獲參數(shù)的條件,像int轉(zhuǎn)化器去捕獲年份,如果我們傳入10000,肯定會(huì)捕獲呀,但不合理,因此,我們正則表達(dá)式可以更好用一些。

使用時(shí),首先要導(dǎo)入進(jìn)來(lái) form django.url import re_path

參數(shù)跟path里相同

下面看正則表達(dá)式的方法用什么捕獲方式

第一種是分組的,在視圖中根據(jù)參數(shù)名傳參

re_path(r'plan/(?P<year>\d\d\d\d)/(?P<month>[0-9]|1[0-2])/',plan),

年 四位數(shù),月 0-9 或者1和0-2

第二種是不分組的,在視圖中安位置傳參

re_path(r'plan/(\d{4})\([0-9]|1[0-2]/',plan),

\d\d\d\d與\d{4}含義相同,都是四位整數(shù)

7.主路由分配給分路由

如果所有是url都在主路由下配置,那么對(duì)于檢查和維護(hù)修改都會(huì)帶來(lái)不便,因此我們需要將主路由分配給各個(gè)app下的路由

方式:include()

使用方法:先需要導(dǎo)入,

from django.urls import path,include

使用: eg,名為teacher的APP,將主路由分給teacher.url

path(‘teacher/',include('teacher.urls')),

在teacher-APP中,創(chuàng)建urls.py(因?yàn)樾陆ǖ腁PP沒(méi)有自帶url.py)

在teacher.url.py中,手動(dòng)輸入

form django.urls import path
from .views import *

這里的views是此APP里的views

include可以多級(jí)使用

include的原理:當(dāng)遇到include時(shí),路徑就被切斷,然后在include包含的分路由中開(kāi)始繼續(xù)檢索。

在path(‘teacher-<age>/',include('teacher.urls')),里面?zhèn)鲄⑹强梢缘?,就是分路由每個(gè)都要傳參。

8、傳遞額外參數(shù)

當(dāng)在路由中傳入額外參數(shù)時(shí),如果kwargs中key值與捕獲參數(shù)不一致,按照kwargs為準(zhǔn)。

  

  

如果在include后,傳遞的話,那么相當(dāng)于此分路由各個(gè)url后都有此額外參數(shù)。

9、app_name的作用

-頁(yè)面重定向

redirect 可以實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)

導(dǎo)入 from django.shortcuts import render,redirect,reverse[/code]

使用 return redirect(‘網(wǎng)址或者路徑')

-reverse

    如果給path里加入name參數(shù),reverse(name)就等于前面路徑

    因此實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),可以設(shè)變量url=reverse(name的值) 然后return redirect(url)即可實(shí)現(xiàn)

-app_name 

 那我們的name就不可以設(shè)為一樣的嗎?

 在不同app下其實(shí)可以一樣,但需要使用app_name

 在url.py里urlpatterns前寫

 app_name = ‘a(chǎn)ppname'

使用:

url=reverse(appname:name)

10、模板系統(tǒng)

HTML源碼寫到模板文件中

-模板路徑設(shè)置

 在項(xiàng)目中創(chuàng)建templates文件夾,在文件夾內(nèi)創(chuàng)建跟APP同名的文件夾

 主目錄下settings.py中找到 然后寫入

TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    ...
  }

-渲染

 在templates下寫的HTML要如何使用呢?

 在需要使用的視圖中引用

from django.template.loader import get_template
from django.shortcuts import render

使用時(shí)需要渲染,用render 

def new(request):
fg=get_template('student/index.html')   路徑從templates往下的開(kāi)始寫
html=fg.render()
return HttpResponse(html)

訪問(wèn)此視圖,HTML模板即可被渲染出來(lái)

另一種更簡(jiǎn)便的方法

def new(request):
return render(request,'student/index.html')

這次就到這里,下一篇會(huì)深入模板變量哦。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?Tornado?框架使用終極指南

    Python?Tornado?框架使用終極指南

    這篇文章主要為大家介紹了Python?Tornado?框架使用終極指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python對(duì)比兩個(gè)字典dict的差異詳解

    python對(duì)比兩個(gè)字典dict的差異詳解

    這篇文章主要為大家詳細(xì)介紹了python?如何對(duì)比兩個(gè)字典dict的不同差異,文中的示例代碼簡(jiǎn)潔易懂,具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2023-05-05
  • Python?NumPy隨機(jī)抽模塊介紹及方法

    Python?NumPy隨機(jī)抽模塊介紹及方法

    這篇文章主要介紹了Python?NumPy隨機(jī)抽模塊介紹及方法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09
  • 教你使用Python畫棵圣誕樹(shù)完整代碼

    教你使用Python畫棵圣誕樹(shù)完整代碼

    圣誕節(jié)快到了,今天小編通過(guò)代碼畫顆圣誕樹(shù),主要通過(guò)t.pensize(10) 修改畫筆大小,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-12-12
  • python實(shí)現(xiàn)異常信息堆棧輸出到日志文件

    python實(shí)現(xiàn)異常信息堆棧輸出到日志文件

    今天小編就為大家分享一篇python實(shí)現(xiàn)異常信息堆棧輸出到日志文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python 安裝移動(dòng)復(fù)制第三方庫(kù)操作

    python 安裝移動(dòng)復(fù)制第三方庫(kù)操作

    這篇文章主要介紹了python 安裝移動(dòng)復(fù)制第三方庫(kù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 修改Pandas的行或列的名字(重命名)

    修改Pandas的行或列的名字(重命名)

    這篇文章主要介紹了修改Pandas的行或列的名字(重命名),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python實(shí)現(xiàn)將xml導(dǎo)入至excel

    Python實(shí)現(xiàn)將xml導(dǎo)入至excel

    本文給大家講解的是使用Python的Testlink實(shí)現(xiàn)將實(shí)現(xiàn)將xml導(dǎo)入至excel表格中,方法非常的簡(jiǎn)單,另外附上其他小伙伴的方法,有需要的童鞋們可以參考下。
    2015-11-11
  • python自動(dòng)化測(cè)試selenium核心技術(shù)處理彈框

    python自動(dòng)化測(cè)試selenium核心技術(shù)處理彈框

    這篇文章主要為大家介紹了python自動(dòng)化測(cè)試selenium核心技術(shù)處理彈框的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 微信跳一跳小游戲python腳本

    微信跳一跳小游戲python腳本

    這篇文章主要為大家詳細(xì)介紹了微信跳一跳小程序Python腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論