一、path的基本规则
path(route, view, kwargs=None, name=None)
① route:是一个字符串的url规则
② view: 是一个视图
③ kwargs: 额外参数,传递给view, 必须是一个字典
④ name: url的命名
案例:
① 新建student app,在虚拟环境中的项目目录下执行该命令
在crm/urls.py中
from django.contrib import admin
from django.urls import path, re_path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('student/', include('student.urls'))
]
在student/urls.py中
from django.urls import path, re_path
from . import views
app_name = 'student'
urlpatterns = [
path('index/', views.index, name='index', kwargs={'username': 'swag'}),
]
在student/views.py中
from django.http import HttpResponse
# 此处必须有一个参数来接受kwargs传过来的值,且需一一对应
def index(request, username):
return HttpResponse('欢迎%s来到首页面' % username)
②re_path的用法
from django.urls import path, re_path
from . import views
app_name = 'student'
urlpatterns = [
re_path(r'detail/(?P<pk>\d|[1][0-2])/', views.detail, name='detail')
]
二、转换器的使用
常用转换器 | |
---|---|
str | 匹配除’/'路径分隔符之外的所有字符串 |
int | 匹配任意整数 |
slug | 匹配任意ascii字符,加上连字符和下划线 |
uuid | 格式化id |
path | 匹配任意非空字符 |
案例:
# 冒号后不要加空格
path('detail/<int:pk>/', views.detail, name='detail')
三、页面重定向
①redirect重定向(静态)
from django.shortcuts import redirect
def index(request):
return redirect('http://www.baidu.com')
这时访问index这个视图的时候就会跳转到百度啦!!!这个算是硬编码
②reverse动态解析路由
案例:实现访问首页时跳转到登录页面
from django.shortcuts import render, redirect, reverse
def index(request, username):
return redirect(reverse('student:login'))
def login(request):
return render(request, 'student/login.html')
在student/urls.py中(这时就用到路由命名啦,app_name也要定义)
from django.urls import path, re_path
from . import views
app_name = 'student'
urlpatterns = [
path('index/', views.index, name='index'),
path('login/', views.login, name='login'),
]