URL 配置 (URLconf) 就像 Django 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表;你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码
- urlpatterns = [
- url(正则表达式, view函数, 参数, 别名),
- ]
参数说明
- """ORM URL Configuration
- The `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 url
- from django.contrib import admin
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- ]
正则表达式的最前面的 r 表示 raw_string 原生字符串。
正则表达的分组用 ()
无名分组
- from django.conf.urls import url
- from . import views
- urlpatterns = [
- url(r'^articles/2003/$', views.special_case_2003),
- url(r'^articles/([0-9]{4})/$', views.year_archive),
- ]
有名分组
(?p < 分组名> 正则语法)
- 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),
- ]
- # View (in blog/views.py)
- def page(request, num):
- retrun HttpRespouse(num)
name 别名要结合模板文件来用方便管理
例如:
- urls.py
- urlpatterns = [
- url(r"register",views.register,name="reg"),
- ]
- 在html文件中引入
- <form action="{% url 'reg' %}" method="post">
如果一个项目下有很多的 app,那么在 urls.py 里面就要写巨多的 urls 映射关系。这样看起来很不灵活,而且杂乱无章。这时候就要根据不同的 app 来分发不同的 url 请求
首先,在 urls.py 里写入 urls 映射条目。注意要导入 include 方法
- from django.conf.urls import include, url
- from django.contrib import admin
- urlpatterns = [
- 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, url
- from app01 import views
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'index/$', views.index),
- ]
来源: http://www.cnblogs.com/yangjian1/p/6493269.html