Django从入门到精通循序渐进--03分路由设置以及页面重定向
Posted ai-python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django从入门到精通循序渐进--03分路由设置以及页面重定向相关的知识,希望对你有一定的参考价值。
path 基本原则:
使用尖括号(<>)从url中捕获值。
包含一个转化器类型(converter type)
没有转化器,将匹配任何字符串,当然也包括了 / 字符。
path(‘test/<xx>/‘,views.test)
当前面的url匹配成功后
就会调用后面的视图函数
views.py文件:
def test(request,xx):
return HttpResponse(‘test !%s‘%xx)
urls.py文件:
path(‘test/<str:xx>/‘,views.test)
默认的转换器:
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符
分路由注册:
一个project有一个总的urls.py
各个app也可以自己建立自己的urls.py
用include()函数在project的urls.py文件进行注册
AV app 下的views.py:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def AVviews(request):
return HttpResponse(‘AV界面!‘)
AV app 下的urls.py:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘avtest/‘,views.AVviews),
]
项目 urls.py:#进行分路由设置 必须添加 include
from django.contrib import admin
from django.urls import path,include
from . import views
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘av/‘,include(‘AV.urls‘)),
] #访问问题:会进行网址拼接 即主路由的地址拼接 app路由的地址
#ip/av/avtest/
传递参数
Kwargs为字典类型 可以传递额外的参数到views中
使用include的时候
需要统一给下面的url一些参数的时候
显得尤其有用
页面重定向:
在路由设置中可以设置各个路由的别名,利于后期的修改
name 参数:
name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。
path(‘avtest/‘,views.AVviews,name=‘old_name‘)
重定向 需要添加 reverse render redirect 这三个函数,添加到路由设置urls.py
redirect是重定向,reverse是将url的name解析成url本身的函数
app 中urls.py:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘avtest/‘,views.AVviews,name=‘old‘),
path(‘avtest2‘,views.AVviewsnew,name=‘new‘),
]
app 中views.py:
from django.shortcuts import render,redirect,reverse
from django.http import HttpResponse
# Create your views here.
def AVviews(request):
return redirect(reverse(‘new‘))
#return HttpResponse(‘AV界面!‘)
def AVviewsnew(request):
return HttpResponse(‘AV转换后的新页面)
访问原来的av/avtest/ 网址,会自动跳转到新的页面,页面发生重定向!
以上是关于Django从入门到精通循序渐进--03分路由设置以及页面重定向的主要内容,如果未能解决你的问题,请参考以下文章
第一章:模型层model layer -- Django从入门到精通系列教程