首页 > 代码库 > Django的URL路由
Django的URL路由
URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码
URL模式
urlpatterns = [url(正则表达式, view函数, 参数, 别名),]
参数说明
- 一个正则表达式字符串
- 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
- 可选的要传递给视图函数的默认参数(字典形式)
- 一个可选的name参数,接合模板方便管理
看看默认的URL的分发的文件
"""ORM URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.10/topics/http/urls/Examples:Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r‘^$‘, views.home, name=‘home‘)Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r‘^$‘, Home.as_view(), name=‘home‘)Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r‘^blog/‘, include(‘blog.urls‘))"""from django.conf.urls import urlfrom django.contrib import adminurlpatterns = [ url(r‘^admin/‘, admin.site.urls),]
正则表达式的最前面的r表示raw_string 原生字符串。
正则表达式的分组
正则表达的分组用()
无名分组
from django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r‘^articles/2003/$‘, views.special_case_2003), url(r‘^articles/([0-9]{4})/$‘, views.year_archive),]
有名分组
(?p<分组名>正则语法)
from django.conf.urls import urlfrom * import viewsurlpatterns = [ url(r‘^blog/$‘, views.page), url(r‘^blog/page(?P<num>[0-9]+)/$‘, views.page),]# View (in blog/views.py)def page(request, num): retrun HttpRespouse(num)
name别名
name别名要结合模板文件来用方便管理
例如:
urls.pyurlpatterns = [ url(r"register",views.register,name="reg"),]在html文件中引入<form action="{% url ‘reg‘ %}" method="post">
路由转发器(include)
如果一个项目下有很多的app,那么在urls.py里面就要写巨多的urls映射关系。这样看起来很不灵活,而且杂乱无章。这时候就要根据不同的app来分发不同的url请求
首先,在urls.py里写入urls映射条目。注意要导入include方法
from django.conf.urls import include, urlfrom django.contrib import adminurlpatterns = [ url(r‘^admin/‘, admin.site.urls), url(r‘^app01/‘, include(‘app01.urls‘)),]
这条关系的意思是将url为”app01/“的请求都交给app01下的urls去处理
其次,在app01下创建一个urls.py文件,用来处理请求的url,使之与views建立映射
from django.conf.urls import include, urlfrom app01 import viewsurlpatterns = [ url(r‘^admin/‘, admin.site.urls), url(r‘index/$‘, views.index),]
Django的URL路由
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。