成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Django基礎(chǔ)之二(URL路由)

Julylovin / 2106人閱讀

摘要:這種方式叫做反向解析反向匹配反向查詢或者簡單的反查實(shí)例視圖函數(shù)模板

URL路由 簡介

對于高質(zhì)量的web應(yīng)用來說,使用簡潔,優(yōu)雅的URL路由是一個值得尊重的細(xì)節(jié),Django可以隨心所欲的設(shè)計URL,不受框架的約束

為了給一個應(yīng)用設(shè)計URL,你需要一個Python模塊,通常被稱為URLconf,這個模塊是純粹的URL模式(簡單的正則表達(dá)式)到python函數(shù)(視圖函數(shù))的簡單映射

Django如何處理一個請求

django加載ROOT_URLCONF指定的模塊,并尋找可用的urlpatterns,它是django.conf.urls.url()實(shí)例的一個python列表

django依次匹配每個URL,在與請求URL匹配的第一個url停下來

一旦其中的一個正則表達(dá)式匹配上,Django將導(dǎo)入并調(diào)用所給的視圖,這個視圖是一個簡單的python函數(shù)或者類

如果沒有匹配到正則表達(dá)式,或者如果過程中跑出異常,django將調(diào)用一個適當(dāng)?shù)腻e誤處理視圖:handler404,handler500,handler403,handler400

URLconf

URLconf是一個python模塊,是一個URL模式(簡單的正則表達(dá)式)到python視圖(函數(shù)或者類)之間的映射

urlpatterns

urlpatterns:是一個url()實(shí)例類型的python列表

urlpatterns:中的每個正則表達(dá)式在第一次訪問他們時被編譯

url函數(shù)
url(regex,view,kwargs=None,name=None)

regex:一個字符串(原始字符串)或簡單的正則表達(dá)式

view:是一個視圖函數(shù)(類)或者as_view()的結(jié)果

kwargs:傳遞額外的參數(shù)給視圖

name:url名稱

include 語法
include(module,namespace=None,app_name=None)
include(pattern_list)
include((pattern_list,app_namespace),namespace=None)
include((pattern_list,app_namespace,instance_namwespace))

module:URLconf模塊

namespace:URL命名空間

app_name:app的命名空間

pattern_list:可迭代的djang.conf.urls.url()實(shí)例

app_namespace:應(yīng)用名稱空間

instance_namespace:實(shí)例的命名空間

實(shí)例:

- 主urls.py
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
    url(r"^dashboard/",include("dashboard.urls")),
    url(r"^admin/",admin.site.urls)
]
- dashboard.urls配置文件
from django.conf.urls import url,include
from . import views
urlpatterns = [
    url(r"^user/",include([
        url(r"^list/$",view.userlist,name="user_list"),
        url(r"^info/$",view.userinfo,name="user_linfo"),
        url(r"^modify/",include([
             url(r"status/$",view.modifystatus,name="modify_status")
        ]))
    ]))
]
- dashboard.views視圖
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
    return HttpResponse("Index Page")

def userList(request):
    return HttpResponse("User List Page")

def userStatus(request):
    return HttpResponse("User Status Page")

def UserInfo(request):
    return HttpResponse("User Info Page")
- 請求方式
curl http://192.168.33.10:8080/dashboard/user/user_list/
curl http://192.168.33.10:8080/dashboard/user/modify/status/
curl http://192.168.33.10:8080/dashboard/user/modify/info/
url參數(shù)

若要從URL中捕獲一個值,只需要在他周圍放置一對圓括號

urlpatterns = [
    url(r"^article/2003/$",views.special_case_2003,name="special_case_2003"),
    url(r"^article/(2004)/$",views.articleViewInfo,name="special_case_2003"),
    url(r"^user/([0-9]{4})/$",views.userInfo),
    url(r"^date/([0-9]{4})/([0-9]{2})/([0-9]{2})$",views.dateInfo)
]

對應(yīng)的視圖函數(shù)

def special_case_2003(request):
    return HttpResponse("2003")

def articleViewInfo(request,*args,**kwargs):
    print(args)       #位置參數(shù)獲取
    return HttpResponse("request2004")

def userInfo(request,*args,**kwargs):
    return HttpResponse(json.dumps(args))

def dateInfo(request,*args,**kwargs):
    data = {"year":args[0],"month":args[1],"day":args[2]}
    # return HttpResponse(json.dumps(data))
    return JsonResponse(data)
關(guān)鍵字參數(shù)
語法
(?Ppattern)
- name是傳給視圖參數(shù)的名字,
- pattern是一個正則表達(dá)式,也是關(guān)鍵字參數(shù)的值

實(shí)例:

url:
url(r"^articles/(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$",views.articleInfoView)
-------------------------
view視圖函數(shù)
def articleInfoView(request,*args,**kwargs):
    return JsonResponse(kwargs)

請求方式:http://192.168.33.10:8080/dashboard/articles/2004/12/21/

url參數(shù)-額外參數(shù)

URLconfs 具有一個鉤子,讓你傳遞一個Python 字典作為額外的參數(shù)傳遞給視圖函數(shù)
django.conf.urls.url() 函數(shù)可以接收一個可選的第三個參數(shù),它是一個字典,表示想要傳遞給視圖函數(shù)的額外關(guān)鍵字參數(shù)

url:
url(r"users/(?P[a-z]+)",views.users,{"extra_args":"hehehe"})
view視圖函數(shù):
from django.conf.urls import url
from . import views
urlpatterns = [
    url(r"^blog/(?P[0-9]{4})/$", views.year_archive, {"foo": "bar"}),
]
請求地址:/blog/2005/
調(diào)用函數(shù):views.year_archive(request, year="2005",foo="bar")
url反向解析

django給每個URL取了一個名字,存儲每個URL與name的映射關(guān)系
根據(jù)Django 視圖的標(biāo)識和將要傳遞給它的參數(shù)的值,獲取與之關(guān)聯(lián)的URL。這種方式叫做反向解析URL、反向URL匹配、反向URL查詢或者簡單的URL反查
實(shí)例:

url:
from django.conf.urls import url
from . import views
urlpatterns = [
    url(r"^articles/([0-9]{4})/$", views.year_archive, name="news-year-archive"),
]
-----------------------
視圖函數(shù)
from django.core.urlresolvers import reverse
模板:
{{ yaervar }}Archieve

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/53233.html

相關(guān)文章

  • Django基礎(chǔ)之二URL路由

    摘要:這種方式叫做反向解析反向匹配反向查詢或者簡單的反查實(shí)例視圖函數(shù)模板 URL路由 簡介 對于高質(zhì)量的web應(yīng)用來說,使用簡潔,優(yōu)雅的URL路由是一個值得尊重的細(xì)節(jié),Django可以隨心所欲的設(shè)計URL,不受框架的約束 為了給一個應(yīng)用設(shè)計URL,你需要一個Python模塊,通常被稱為URLconf,這個模塊是純粹的URL模式(簡單的正則表達(dá)式)到python函數(shù)(視圖函數(shù))的簡單映射 ...

    Prasanta 評論0 收藏0
  • Django基礎(chǔ)之(十)DRF

    摘要:基礎(chǔ)之二簡介官方文檔安裝與配置安裝配置重新創(chuàng)建數(shù)據(jù)庫并配置新建一個的將座位,并做配置加入環(huán)境變量定義好主備路由主路由項(xiàng)目路由創(chuàng)建名稱地址聯(lián)系電話郵箱創(chuàng)建數(shù)據(jù)庫同步生成數(shù)據(jù)北京機(jī)房北京市酒仙橋北京機(jī)房上海機(jī)房上海上 DRF基礎(chǔ)之二 簡介 官方文檔 Requirements REST framework requires the following: Python (2.7, 3.4, ...

    eccozhou 評論0 收藏0
  • Django基礎(chǔ)之五(回顧)

    摘要:回顧模板相關(guān)的知識點(diǎn)與模型不相關(guān)的做渲染,傳遞和前端頁面主路由文件路由文件視圖文件模板文件類視圖版本的模板渲染路由類視圖版本模板視圖版本路由模板視圖版本接受模板傳過來的參數(shù),然后渲染 回顧 模板相關(guān)的知識點(diǎn) 與模型不相關(guān)的 render做渲染,傳遞request和前端頁面 - devops/urls.py #主路由文件 from django.conf.urls import url,...

    jhhfft 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<