什么是urls.py
url.py本质上就是一个标准的python文件,这个python文件的作用就是再URL请求个处理该请求的视图函数建立一个对应关系,简单来说它就是一个url请求映射表。
urls.py是如何工作的
看一下前面HelloWorld项目中的urls.py文件代码。
from django.contrib import admin from django.urls import path from .import views urlpatterns = [ path('', views.hello,name='hello'), path('admin/', admin.site.urls), ]
- from django.contrib import admin 导入Django的默认管理站点admin
- from django.urls import path 导入URL解析函数path()
- from .import views 导入当前目录中的视图模块views(对应views.py文件)
Urlpatterns变量包含可两个URL映射:
path('',views.hello,name='hello'):
- 第一个参数为空字符串,用于匹配只使用域名或IP地址的URL,如127.0.0.1:8000.
- 第二个参数”views.hello”设置了URL匹配时调用的视图函数。
- 第三个参数"name=hello"将URL模式的名称设置为hello.
path('admin/',admin.site.urls)
- 第一个参数为"admin/"用于匹配”域名或IP地址/admin/“格式的URL,如127.0.0.1:8000/admin/
path()和re_path()函数
path(routh,view,kwarge=None,name=None)
re_path(routh,view,kwarge=None,name=None)
- 参数routh为URL模式,用于匹配请求的URL中的‘路径’
- 参数view用于设置路径匹配时调用的视图函数
- 可选参数kwarge用于设置传递给视图函数的附加数据
- 可选参数name为URL模式命名。
URL正则表达式
常用的正则表达式
创建一个项目
views.py文件代码:
from django.http import HttpResponse def CharInUrl(request): return HttpResponse("只包含了大小写字母的URL") def NumberInUrl(request): return HttpResponse("只包含了数字的URL")
urls.py文件代码:
from django.contrib import admin from django.urls import path from django.urls import re_path #因为使用的是正则表达式,所以,需要引用re_path from .import views urlpatterns = [ re_path(r'^[A-Za-z]+$',views.CharInUrl),#匹配大小写字母组成的字符串 re_path(r'^d{2,}$',views.NumberInUrl),#匹配至少两位数字组成的数字字符串 path('admin/', admin.site.urls), ]
保存之后,启动项目,浏览器输入:http://127.0.0.1:8000/abc
浏览器输入:http://127.0.0.1:8000/1234
只要端口后面输入符合规则的路径,就是返回对应的视图界面。
关注个人公众号:测试开发进阶之路