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.mzph.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;可以用于很多不…