最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django中的函數(shù)視圖和類視圖以及路由的定義方式

 更新時(shí)間:2025年08月02日 14:32:10   作者:藍(lán)小白1024  
Django視圖分函數(shù)視圖和類視圖,前者用函數(shù)處理請(qǐng)求,后者繼承View類定義方法,路由使用path()、re_path()或url(),通過(guò)include()整合子應(yīng)用路由,需注意請(qǐng)求方式判斷及裝飾器限制

Django允許接收的請(qǐng)求方法

http_method_names = [‘get', ‘post', ‘put', ‘patch', ‘delete', ‘head', ‘options', ‘trace']

函數(shù)視圖

  1. 函數(shù)視圖它是一個(gè)標(biāo)準(zhǔn)的Python函數(shù)
  2. 函數(shù)視圖中, 第一個(gè)參數(shù)必須定義: 第一個(gè)參數(shù)為請(qǐng)求對(duì)象, 用于接收用戶發(fā)送的請(qǐng)求報(bào)文.
  3. 在函數(shù)視圖中, 必須返回響應(yīng)對(duì)象: 用于構(gòu)成響應(yīng)報(bào)文, 并響應(yīng)給用戶
  • 請(qǐng)求對(duì)象: HTTPRequest() 對(duì)應(yīng)的對(duì)象
  • 響應(yīng)對(duì)象: HTTPResponse() 對(duì)應(yīng)的對(duì)象
from django import http

# 創(chuàng)建一個(gè)函數(shù)視圖
def text_view(request):
	"""
	函數(shù)視圖
	:param request:包含請(qǐng)求報(bào)文信息,請(qǐng)求對(duì)象
	:return: 響應(yīng)對(duì)象,用于構(gòu)造響應(yīng)報(bào)文,并響應(yīng)給用戶
	"""
	# 響應(yīng)數(shù)據(jù)調(diào)用http
	return http.HTTPResponse("數(shù)據(jù)data")

這里如果有請(qǐng)求路徑相同, 但是請(qǐng)求方式不同, 就需要在函數(shù)視圖內(nèi)加一個(gè)判斷

def text_view(request):
	"""
	函數(shù)視圖
	:param request:包含請(qǐng)求報(bào)文信息,請(qǐng)求對(duì)象
	:return: 響應(yīng)對(duì)象,用于構(gòu)造響應(yīng)報(bào)文,并響應(yīng)給用戶
	"""

	# 先判斷請(qǐng)求方法是什么如"GET","POST"
	if request.method == "GET":
		# 處理GET請(qǐng)求
		return http.HTTPResponse("數(shù)據(jù)data")
	elif request.method == "POST":
		# 處理POST請(qǐng)求
		return http.HTTPResponse("數(shù)據(jù)data")

在一些接口需要限制請(qǐng)求方式時(shí)可以使用裝飾器require_http_methods

from django.views.decorators.http import require_http_methods

# 添加一個(gè)裝飾器進(jìn)行限制,請(qǐng)求方式大寫
@require_http_methods(['GET'])
def text_view(request):
	"""
	函數(shù)視圖, 限制請(qǐng)求方式,只能使用GET進(jìn)行訪問(wèn),其他訪問(wèn)方式會(huì)報(bào)錯(cuò)405
	:param request:包含請(qǐng)求報(bào)文信息,請(qǐng)求對(duì)象
	:return: 響應(yīng)對(duì)象,用于構(gòu)造響應(yīng)報(bào)文,并響應(yīng)給用戶
	"""
	# 響應(yīng)數(shù)據(jù)調(diào)用http
	return http.HTTPResponse("數(shù)據(jù)data")

類視圖

類視圖是一個(gè)Python類

定義類視圖時(shí)需要繼承Django中的提供的父類視圖 View

在類視圖中

  • 需要定義跟請(qǐng)求方法同名的函數(shù)來(lái)對(duì)應(yīng)不同的請(qǐng)求方式
  • 在請(qǐng)求方法同名的函數(shù)中,還必須定義一個(gè)接收請(qǐng)求的參數(shù)(跟函數(shù)視圖一樣)
  • 在請(qǐng)求方法同名的函數(shù)中, 也必須返回一個(gè)相應(yīng)對(duì)象
from django.views import View


class CodeView(View):
	"""
	類視圖
	"""
	def get(self, request)
		"""
		處理GET請(qǐng)求
		"""
		return http.HttpResponse("數(shù)據(jù)")

	def post(self, request)
		"""
		處理POST請(qǐng)求
		"""
		return http.HttpResponse("數(shù)據(jù)")

   		...

路由

定義路由的方法:path()、re_path()、url()

  • Django1.x版本:url()
  • Django2.x版本:path()、re_path()

說(shuō)明:

  • 為了在版本迭代中,保留舊版本的路由系統(tǒng),url()在新版中依然可用。
  • 并新增了一個(gè)url()的替代方案re_path(),所以u(píng)rl()幾乎跟re_path()一樣。

路由方法對(duì)比

  • path()
# 函數(shù)視圖path()路由語(yǔ)法:
# path('網(wǎng)絡(luò)地址正則表達(dá)式', 函數(shù)視圖名),

# 類視圖path()路由語(yǔ)法:
# path('網(wǎng)絡(luò)地址正則表達(dá)式', 類視圖.as_view()),
path()路由語(yǔ)法中,不需要定義正則表達(dá)式嚴(yán)格的開頭和結(jié)尾,因?yàn)橐呀?jīng)封裝好了
  • re_path()、url()
# 函數(shù)視圖re_path()路由語(yǔ)法:
# re_path(r'^網(wǎng)絡(luò)地址正則表達(dá)式$', 函數(shù)視圖名),

# 類視圖re_path()路由語(yǔ)法:
# re_path(r'^網(wǎng)絡(luò)地址正則表達(dá)式$', 類視圖.as_view()),
# 函數(shù)視圖url()路由語(yǔ)法:
# url(r'^網(wǎng)絡(luò)地址正則表達(dá)式$', 函數(shù)視圖名),

# 類視圖url()路由語(yǔ)法:
# url(r'^網(wǎng)絡(luò)地址正則表達(dá)式$', 類視圖.as_view()),
re_path()和url()路由語(yǔ)法中,必須要定義正則表達(dá)式嚴(yán)格的開頭和結(jié)尾

總路由

在Django中一個(gè)子應(yīng)用對(duì)應(yīng)一個(gè)總路由

總路由中,使用include()子應(yīng)用里面的所有路由都包含在工程總路由中

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    # 自帶的后臺(tái)管理系統(tǒng)的總路由:可以忽略
    path('admin/', admin.site.urls),

    # 總路由包含子路由語(yǔ)法
    # path('網(wǎng)絡(luò)地址前綴/', include('子應(yīng)用.urls')),
    # 或者
    # path('', include('子應(yīng)用.urls')),

	# 例: 
    # 用戶模塊:http://127.0.0.1:8000/users/register/
    path('', include('users.urls')),
]

函數(shù)視圖的路由

from django.urls import path

# 把當(dāng)前文件下的視圖文件導(dǎo)進(jìn)來(lái)
from . import views


# urlpatterns是被Django自動(dòng)識(shí)別的路由列表變量:定義該應(yīng)用的所有路由信息
urlpatterns = [
    # 函數(shù)視圖路由語(yǔ)法:
    # path('網(wǎng)絡(luò)地址正則表達(dá)式', 函數(shù)視圖名),

	# 例:
    # 用戶注冊(cè):http://127.0.0.1:8000/users/register/
    path('users/register/', views.register),
]

類視圖定義路由

from django.urls import path

from . import views

# urlpatterns是被Django自動(dòng)識(shí)別的路由列表變量:定義該應(yīng)用的所有路由信息
urlpatterns = [
    # 類視圖路由語(yǔ)法:
    # path('網(wǎng)絡(luò)地址正則表達(dá)式', 類視圖.as_view()),

    # 用戶注冊(cè):http://127.0.0.1:8000/users/register/
    path('users/register/', views.RegisterView.as_view()),
]

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮

    Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮

    這篇文章主要為大家詳細(xì)介紹了Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python中BeautifulSoup通過(guò)查找Id獲取元素信息

    Python中BeautifulSoup通過(guò)查找Id獲取元素信息

    這篇文章主要介紹了Python中BeautifulSoup通過(guò)查找Id獲取元素信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python中DataFrame數(shù)據(jù)合并merge()和concat()方法詳解

    python中DataFrame數(shù)據(jù)合并merge()和concat()方法詳解

    Pandas提供了很多合并Series和Dataframe的強(qiáng)大的功能,通過(guò)這些功能可以方便的進(jìn)行數(shù)據(jù)分析,下面這篇文章主要給大家介紹了關(guān)于python中DataFrame數(shù)據(jù)合并merge()和concat()方法的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 如何利用Python 快速找到最大文件

    如何利用Python 快速找到最大文件

    現(xiàn)在的電腦差不多都是固態(tài)硬盤了,速度很快,但容量不會(huì)太大,經(jīng)常會(huì)出現(xiàn)磁盤空間不足的情況,怎么辦,刪除那些不重要的最大的文件是最有效的辦法,這篇文章我們就來(lái)介紹介紹了如何利用Python 快速找到最大文件,需要的朋友可以參考一下
    2021-11-11
  • 利用Python解決構(gòu)造回文字符串問(wèn)題的方法

    利用Python解決構(gòu)造回文字符串問(wèn)題的方法

    回文字符串是指正讀和反讀都相同的字符串,例如"aba"或"abba",構(gòu)造回文字符串問(wèn)題通常涉及從給定字符串中刪除某些字符,以形成最長(zhǎng)的回文子序列,或者計(jì)算形成回文所需的最小刪除次數(shù),本文將詳細(xì)介紹如何使用Python和動(dòng)態(tài)規(guī)劃算法來(lái)解決構(gòu)造回文字符串問(wèn)題
    2025-04-04
  • Python爬蟲與防反爬蟲策略從入門到實(shí)戰(zhàn)

    Python爬蟲與防反爬蟲策略從入門到實(shí)戰(zhàn)

    本文將從基礎(chǔ)的爬蟲原理和庫(kù)介紹開始,逐步深入,通過(guò)實(shí)際示例代碼,帶領(lǐng)讀者學(xué)習(xí)Python爬蟲的使用和技巧,掌握從簡(jiǎn)單到復(fù)雜的爬蟲實(shí)現(xiàn)
    2024-01-01
  • python os用法總結(jié)

    python os用法總結(jié)

    本篇文章給大家分享了關(guān)于python os用法的相關(guān)總結(jié)性內(nèi)容,對(duì)此有學(xué)習(xí)需要朋友參考下吧。
    2018-06-06
  • PyTorch實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的搭建詳解

    PyTorch實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的搭建詳解

    這篇文章主要為大家介紹了PyTorch實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的搭建詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python實(shí)現(xiàn)更改圖片尺寸大小的方法(基于Pillow包)

    Python實(shí)現(xiàn)更改圖片尺寸大小的方法(基于Pillow包)

    這篇文章主要介紹了Python實(shí)現(xiàn)更改圖片尺寸大小的方法,結(jié)合實(shí)例形式分析了Python基于Pillow包更改圖片屬性的相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • python庫(kù)pydantic數(shù)據(jù)驗(yàn)證和設(shè)置管理庫(kù)的用途

    python庫(kù)pydantic數(shù)據(jù)驗(yàn)證和設(shè)置管理庫(kù)的用途

    pydantic是一個(gè)用于數(shù)據(jù)驗(yàn)證和設(shè)置管理的Python庫(kù),它主要利用Python類型注解來(lái)定義數(shù)據(jù)模型的結(jié)構(gòu)和驗(yàn)證規(guī)則,本文給大家介紹python庫(kù)pydantic數(shù)據(jù)驗(yàn)證和設(shè)置管理庫(kù)的用途,感興趣的朋友跟隨小編一起看看吧
    2025-09-09

最新評(píng)論

固始县| 东港市| 黔西县| 台北县| 广宗县| 通榆县| 年辖:市辖区| 苏尼特左旗| 加查县| 新河县| 开江县| 清涧县| 仁布县| 绍兴市| 巴林右旗| 岱山县| 绍兴市| 临沧市| 阿坝县| 仁寿县| 静安区| 仪征市| 油尖旺区| 乐业县| 弥勒县| 洛南县| 玛沁县| 盐城市| 申扎县| 明水县| 乐陵市| 乐至县| 治县。| 张家界市| 莲花县| 神农架林区| 禄劝| 柳林县| 东宁县| 林甸县| 司法|