urls基本配置
urls
配置类似于网站的目录,通过 urls 的配置,告诉 Django 对于该 url 调用哪段代码。基本的语法格式1
2
3 urlpatterns = [
url(正则表达式, views视图函数,参数,别名),
]
- 正则表达式 正则表达式字符串
- 视图函数 可调用的对象,通常是视图函数或一个指定视图函数路径的字符串
- 参数 可选的要传递给视图函数的默认参数
- 别名 可选的name参数
正则字符串参数
配置实例
1 | urlpatterns = [ |
- 一旦匹配成功,则不再继续
- 若要从 url 中捕获一个值,只需要在它的周围放一对圆括号
- 不需要添加一个前置的反斜杠,例如,应该是
^articles
而不是^/articles
,因为每一个都会有 - 每个表达式前面的
r
建议都添加,正则表达式的用法 - 是否开启 url 访问地址后面不带 / 跳转为带有 / 的路径,
APPEND_SLASH=True
include 其他urls
当主 urls 中有很多匹配路由时,会比较杂乱,建议根据项目中的应用,使用 include 参数,分配到各项目的 urls 文件中。
对于 Djangotest 项目, demo01 应用Djangotest/urls.py
1
2
3
4
5
6
7
8
9from django.conf.urls import url,include
from django.contrib import admin
from demo import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/$', views.login),
url(r'^api/', include('demo01.urls')), # include使用方法
]
demo01/urls.py
1
2
3
4
5
6
7
8
9from django.conf.urls import url
from demo01 import views
urlpatterns = [
url(r'^list.html', views.list),
url(r'^add.html', views.add),
url(r'^update.html', views.update),
url(r'^delete.html', views.delete),
]
此时访问地址为 http://127.0.0.1:8000/api/list.html
,将会匹配到 demo01 的 urls 文件。
参数传递
当需要捕获 url 中传递的参数时候,可以采用如下的方式demo01/urls.py
1
2
3
4
5
6
7
8
9from django.conf.urls import url
from demo01 import views
urlpatterns = [
url(r'^list.html', views.list),
url(r'^add.html', views.add),
url(r'^(?P<num>[0-9]+)/update.html', views.update), # 正则匹配,参数num
url(r'^delete.html', views.delete),
]
/demo01/views.py
1
2
3def update(requests, num):
print(num)
return HttpResponse('this update')
此处使用 num
就可以直接接受到参数。
另外,此处传递的参数都是字符串,不论传递的是数字还是字符串。