扁平化设计风格的网站模板,威海西郊建设集团网站,客户评论 网站建设,想做苗木生意网站怎么怎么做** 路由系统:URL配置(URLconf)就像Django所支撑网站的目录. 本质是URL与该URL要调用的函数的映射表 基本格式 :
from django.conf.urls import url
urlpatterns [url(正则表达式,views视图,参数,别名)
]
参数 -- 传给函数视图的默认参数 (字典形式)
别名 -- 一个可选的name参…** 路由系统:URL配置(URLconf)就像Django所支撑网站的目录. 本质是URL与该URL要调用的函数的映射表 基本格式 :
from django.conf.urls import url
urlpatterns [url(正则表达式,views视图,参数,别名)
]
参数 -- 传给函数视图的默认参数 (字典形式)
别名 -- 一个可选的name参数若要从URL中捕获一个值只需要在它周围放置一对圆括号分组匹配
不需要添加一个前导的反斜杠因为每个URL 都有。例如应该是^articles 而不是 ^/articles
每个正则表达式前面的r 是可选的但是建议加上
是否开启URL访问地址后面不为/跳转至带有/的路径的配置项 APPEND_SLASHTrue(\d) 正则表达式分组匹配通过圆括号来捕获URL中的值并以位置参数形式传递给视图
(?P name pattern)其中name是组的名称pattern是要匹配的模式 可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图在实际应用中使用分组命名匹配的方式可以让你的URLconf 更加明晰且不容易产生参数顺序问题的错误但是有些开发人员则认为分组命名组语法太丑陋、繁琐URLconf 匹配的位置 ***
例如
http://www.example.com/myapp/ 请求中URLconf 将查找 /myapp/
http://www.example.com/myapp/?page3 请求中URLconf 仍将查找 /myapp/
URLconf 不检查请求的方式 换言之,所有的请求方法 -- 同一个URL的POST,GET,HEAD,等等,都将路由到相同的函数捕获的参数永远都是字符串 *** re匹配 match // find all // search
每个在URLconf中捕获的参数都作为一个普通的Python字符串传递给视图无论正则表达式使用的是什么匹配方式
url(r^articles/(?Pyear[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(?Pnum[0-9])/$, views.page),
]
# views.py中可以为num指定默认值
def page(request, num1):pass上面例子上,两个url 模式指向相同的 函数,但是第一个模式并没有从url中捕获任何东西如果第一个匹配上了,page()函数将使用其默认参数num1,如果第二个匹配上了,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/(?Pyear[0-9]{4})/$, views.year_archive, {foo: bar}),
]在这个例子中对于/blog/2005/请求Django 将调用views.year_archive(request, year2005, foobar)。
当传递额外参数的字典中的参数和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, namehome), # 给我的url匹配模式起名为 home
url(r^index/(\d*), views.index, nameindex), # 给我的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, namespaceapp01)),url(r^app02/, include(app02.urls, namespaceapp02)),
]app01中的urls.py
from django.conf.urls import url
from app01 import viewsapp_name app01
urlpatterns [url(r^(?Ppk\d)/$, views.detail, namedetail)
]app02中的urls.py
from django.conf.urls import url
from app02 import viewsapp_name app02
urlpatterns [url(r^(?Ppk\d)/$, views.detail, namedetail)
]现在我的两个app中 url名称重复了我反转URL的时候就可以通过命名空间的名称得到我当前的URL
下面是语法:
命名空间名称:URL名称
模板中使用: -html-
{%url app01:detail pk12 pp99 %}
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