URL some

**

路由系統:
URL配置(URLconf)就像Django所支撐網站的目錄. 本質是URL與該URL要調用的函數的映射表
基本格式 :
from django.conf.urls import url
urlpatterns = [url(正則表達式,views視圖,參數,別名)
]
參數 -- 傳給函數視圖的默認參數 (字典形式)
別名 -- 一個可選的name參數若要從URL中捕獲一個值,只需要在它周圍放置一對圓括號(分組匹配)
不需要添加一個前導的反斜杠,因為每個URL 都有。例如,應該是^articles 而不是 ^/articles
每個正則表達式前面的'r' 是可選的但是建議加上
是否開啟URL訪問地址后面不為/跳轉至帶有/的路徑的配置項    APPEND_SLASH=True(\d+) 正則表達式分組匹配(通過圓括號)來捕獲URL中的值并以位置參數形式傳遞給視圖
(?P < name > pattern),其中name是組的名稱,pattern是要匹配的模式    可以使用分組命名匹配的正則表達式組來捕獲URL中的值并以關鍵字參數形式傳遞給視圖在實際應用中,使用分組命名匹配的方式可以讓你的URLconf 更加明晰且不容易產生參數順序問題的錯誤,但是有些開發人員則認為分組命名組語法太丑陋、繁瑣URLconf 匹配的位置  ***
例如
http://www.example.com/myapp/ 請求中,URLconf 將查找 /myapp/
http://www.example.com/myapp/?page=3 請求中,URLconf 仍將查找 /myapp/
URLconf 不檢查請求的方式  換言之,所有的請求方法 -- 同一個URL的POST,GET,HEAD,等等,都將路由到相同的函數捕獲的參數永遠都是字符串  ***  re匹配   match // find all // search
每個在URLconf中捕獲的參數都作為一個普通的Python字符串傳遞給視圖,無論正則表達式使用的是什么匹配方式
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive)
傳遞到視圖函數views.year_archive() 中的year參數永遠是一個字符串類型視圖函數指定默認值
# urls.py中
from django.conf.urls import url
from . import views
urlpatterns = [url(r'^blog/$', views.page),url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]
# views.py中,可以為num指定默認值
def page(request, num="1"):pass
上面例子上,兩個url 模式指向相同的 函數,但是第一個模式并沒有從url中捕獲任何東西
如果第一個匹配上了,page()函數將使用其默認參數num='1',如果第二個匹配上了,page()
將使用正則表達式捕獲到的num值
 

include 其他的URLconfs? --從其他地方導入urls

from django.conf.urls import include, urlurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^blog/', include('blog.urls')),  # 可以包含其他的URLconfs文件
]

傳遞額外的參數給視圖函數

URLconfs 具有一個鉤子,讓你傳遞一個python 字典作為額外的參數傳遞給視圖函數

django.conf.urls.url() 可以接受一個可選的第三個參數,它是一個字典,表示想要傳遞給視圖函數的額外關鍵字參數

from django.conf.urls import url
from . import viewsurlpatterns = [url(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive, {'foo': 'bar'}),
]在這個例子中,對于/blog/2005/請求,Django 將調用views.year_archive(request, year='2005', foo='bar')。
當傳遞額外參數的字典中的參數和URL中捕獲值的命名關鍵字參數同名時,函數調用時將使用的是字典中的參數,而不是URL中捕獲的參數

命名URL和URL反向解析

在使用Django 項目時,一個常見的需求是獲得URL的最終形式,以用于嵌入到生成的內容中(視圖中和顯示給用戶的URL等)或者用于處理服務器端的導航(重定向等).-- 反向解析 -- 
反向解析URL、反向URL 匹配、反向URL 查詢或者簡單的URL 反查在需要URL 的地方,對于不同層級,Django 提供不同的工具用于URL 反查:
1 在模板中: 使用url模板標簽
2 在python代碼中:使用django.core.urlresolvers.reverse() 函數
3 在更高層的與處理Django 模型實例相關的代碼中:使用get_absolute_url() 方法

使用 -- 給我們的URL匹配規則起個名字,一個URL模式起一個名字,只需要通過名字調用當前的URL
下面舉例:
url(r'^home', views.home, name='home'),  # 給我的url匹配模式起名為 home
url(r'^index/(\d*)', views.index, name='index'),  # 給我的url匹配模式起名為index

后面再模板中引用:  --HTML--
{% url 'home' %}在views函數中可以這樣引用   --py--
from django.urls import reverse 
reverse("index", args=("2018", ))

命名 空間模式

即使不同的APP使用相同的URL名稱,URL的命名空間模式也可以讓你唯一反轉命名的URL

舉例
project中的urls.py
from django.conf.urls import url, includeurlpatterns = [url(r'^app01/', include('app01.urls', namespace='app01')),url(r'^app02/', include('app02.urls', namespace='app02')),
]app01中的urls.py
from django.conf.urls import url
from app01 import viewsapp_name = 'app01'
urlpatterns = [url(r'^(?P<pk>\d+)/$', views.detail, name='detail')
]app02中的urls.py
from django.conf.urls import url
from app02 import viewsapp_name = 'app02'
urlpatterns = [url(r'^(?P<pk>\d+)/$', views.detail, name='detail')
]現在,我的兩個app中 url名稱重復了,我反轉URL的時候就可以通過命名空間的名稱得到我當前的URL
下面是語法:
'命名空間名稱:URL名稱'
模板中使用:       -html-
{%url 'app01:detail' pk=12 pp=99 %}
views 中函數使用  -py-  
v = reverse('app01:detail',kwargs={'pk':11})

https://www.cnblogs.com/maple-shaw/articles/9282718.html -- 路由--

?

轉載于:https://www.cnblogs.com/zhangchen-sx/p/10444972.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275732.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么?在 VSCode 里也能用 Postman了?

大家好&#xff0c;我是若川。VSCode中有很多好用的插件&#xff0c;今天推薦 Postcode。面試、學習源碼系列、年度總結、JS基礎系列以前一直在用postman做API測試&#xff0c;如果你同時在使用vscode開發時&#xff0c;每次切出去可能比較煩&#xff0c;其實就是太懶了。。。作…

根據窗口名稱查找關鍵字彈性域用到的表,列等信息

/*根據窗口名稱查找關鍵字彈性域用到的表&#xff0c;列等信息*/--selectc.id_flex_name, a.id_flex_structure_name, b.form_left_prompt, c.application_table_name, b.application_column_name, b.flex_value_set_id fromfnd_id_flex_struct…

英語 動畫 教學 字母_字母形式在閱讀教學中的作用

英語 動畫 教學 字母Note: this essay may also be found on Design Observer.注意&#xff1a;這篇文章也可以在 Design Observer 上找到 。 My first-grade reading tutor gave the best stickers. Puffy, smelly, sparkly — she even had a few that were fuzzy. At that …

java中自定義表單和流程_讓馳騁工作流程引擎 ccbpm使用自定義表單來實現自己的業務邏輯....

1.1.1.1: SDK表單概要說明&#xff1a;我們把流程引擎與表單引擎統稱為ccbpm&#xff0c;但是有一些用戶并不想使用表單引擎&#xff0c;而是用自己的表單&#xff0c;僅僅使用流程引擎&#xff0c;這樣的方式就要采用ccbpm的sdk表單開發模式。關于ccbpm的SDK:ccbpm的sdk就是cc…

乘風破浪的前端小姐姐,是如何一步步走向成功的?

大家好&#xff0c;我是若川。名校畢業的被刪大佬也經歷了社會的毒打&#xff0c;但她沒有放棄。面試、學習源碼系列、年度總結、JS基礎系列王貝珊&#xff0c;騰訊高級工程師&#xff0c;騰訊 AlloyTeam 成員&#xff0c;現騰訊文檔網絡層技術負責人。畢業于中山大學。工作 6 …

【譯】為什么我更喜歡對象而不是switch語句

原文自工程師Enmanuel Durn博客&#xff0c;傳送門 最近&#xff08;或者不是最近&#xff0c;這完全取決于您什么時候閱讀這邊文章&#xff09;&#xff0c;我正在跟我的團隊伙伴討論如何去處理這種需要根據不同的值去處理不同的情況的方法&#xff0c;通常對于這種情況下&…

摩托羅拉周二將正式分拆為兩經營實體

據華爾街中文網消息稱&#xff0c;摩托羅拉公司周二將正式分拆為兩個經營實體——摩托羅拉移動控股(MMI)和摩托羅拉解決方案公司(MSI)。前者由主要面向消費者的智能手機和機機頂盒業務組成&#xff0c;后者則專注于公共安全無線電和手持掃描儀業務。 上述兩家公司的股票均已于…

如何創建和諧的色彩系統

擁有和諧的色彩系統的好處 (The benefits of having a harmonious color system) Consistent branding express across all platform 在所有平臺上表達一致的品牌 The consistent interface creates a better user experience 一致的界面創建了更好的用戶體驗 More productive …

java restful接口測試_詳解SpringBoot restful api的單元測試

現在我們來利用Spring Boot來構建一個RestFul API&#xff0c;具體如下&#xff1a;1.添加Springboot測試注解RunWith(SpringRunner.class)SpringBootTestpublic class UserControllerTest {}2.偽造mvc環境// 注入Spring 工廠Autowiredprivate WebApplicationContext wac;//偽造…

老姚淺談:怎么學JavaScript?

大家好&#xff0c;我是若川。當初我就是看本文深受啟發&#xff0c;開始看書讀源碼。所以現在聯系了作者老姚 授權轉載分享給大家。我按照文中的做法敲完了《JavaScript語言精粹 修訂版》&#xff0c;在2017年7月23日寫出了我的第一篇文章《讀書筆記》。看完了《JavaScript面向…

JavaScript 如何使用閉包

閉包基本上是內部函數可以訪問其范圍之外的變量&#xff0c;可用于實現隱私和創建函數工廠 定義一個數組&#xff0c;循環遍歷這個數組并在延遲3秒后打印每個元素的索引 先看一個不正確的寫法&#xff1a; const arr [10, 12, 15, 21]; for (var i 0; i < arr.length; i) …

ai中導入sketch_在Sketch中營造深度感

ai中導入sketchCreating a user interface with depth can seem daunting at first, but it only requires you to understand one fundamental rule — emulating a light source.首先&#xff0c;創建具有深度的用戶界面似乎很艱巨&#xff0c;但這僅要求您了解一個基本規則-…

java byte轉bigdecimal_Java BigDecimal byteValueExact()用法及代碼示例

java.math.BigDecimal.byteValueExact()是一個內置函數&#xff0c;它將BigDecimal轉換為字節并檢查丟失的信息。任何大于127或小于-128的BigDecimal值都將生成異常&#xff0c;因為它不適合字節范圍。用法:public byte byteValueExact()參數&#xff1a;該方法不接受任何參數。…

Python3+PyCharm+selenium3 環境搭建

安裝Python3請去python官網下載安裝包&#xff0c;我用的是Python3.6安裝PyCharm&#xff0c;這個也是去官網自己下吧&#xff0c;偶的是2018.2.3&#xff08;CommunityEdition&#xff09;接下來安裝seleniumPyCharm中Tremianl安裝完成后&#xff0c;在python Console中輸入沒…

2021 年最值得了解的 Node.js 工具

大家好&#xff0c;我是若川。今天分享一篇用得上的 node 庫 鏈接地址&#xff1a;https://github.com/huaize2020/awesome-nodejs?前言&#xff1a;文章的靈感來源于&#xff0c;社群中某大佬分享一個自己耗時數月維護的github項目 awesome-nodejs 。或許你跟我一樣會有一個疑…

DOMContentLoaded與interactive

ie中inline script執行時竟然第一次進入頁面,doc.readyState是interactive.刷新則是loadinginteractive也就算了,竟然沒有把dom樹構建好,也沒有body...而在inline的腳本里跑計時器什么的,去doc.body.doScroll(left);則有可能碰到interactive時dom樹構建好的情況.而其它瀏覽器in…

figma下載_何時在Figma中使用組或框架

figma下載Groups and Frames have very different uses in Figma, but it’s difficult at first to tell why both of them exist. I can assure you that they complement each other, but first, you need to understand the nuances of each. I’ll show you how to make t…

java標記錯誤_標記電子郵件Java時出錯

在調用以下我的代碼片段時&#xff1a;Message message_in null;inbox instanceof IMAPFolderIMAPFolder f (IMAPFolder)inbox;f.idle();System.out.println("IDLE done");message_in inbox.getMessage(inbox.getMessageCount());message_in.setFlag(Flags.Flag.D…

邁入現代 Web 開發(GMTC 2021 演講全文)

前言&#xff1a;希望像做游戲一樣做 Web 開發的 dexteryy 同學今天在 GMTC 技術大會上又搞了一場「跨年演講」&#xff08;內容超多的意思&#xff09;&#xff0c;不但現場爆滿、超時嚴重&#xff0c;而且一如既往的講完之后只要把講稿和幻燈片拼起來就能發出來&#xff0c;大…

Laravel 測試: PHPUnit 入門教程

介紹 PHPUnit 測試的基礎知識&#xff0c;使用基本的 PHPUnit 斷言和 Laravel 測試助手。 介紹 PHPUnit 是最古老和最著名的 PHP 單元測試包之一。它主要用于單元測試&#xff0c;這意味著可以用盡可能小的組件測試代碼&#xff0c;但是它也非常靈活&#xff0c;可以用于很多不…