(6)路由层下的反向解析

需求:访问index页面的时候重定向的test页面

urls.py

from django.conf.urls import url
from django.contrib import admin


from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/',views.index),
url(r'^test/',views.test),
]

views.py

from django.shortcuts import render,HttpResponse,redirect

def index(request):
# return HttpResponse('我是index页面')
return redirect('/test/') #这里返回的页面前后都要有/,否则会出错
def test(request):
return HttpResponse('我是test页面')

需求:当修改路由下的路径后,视图下的重定向路径也跟着变,动态的改变

需要用到反向解析:需要导入reverse函数

urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/',views.index),
# 这里的name就是给当前路径重命了一个名,url第一个地址是一个正则表达式,第二个是函数的内存地址用来调用相关的函数,第三个是给第一个地址起一个别名,用来做反向解析的
url(r'^test/',views.test,name='ttt'),
]

views.py

from django.shortcuts import render,HttpResponse,redirect,reverse


def index(request):
# 这里根据urls路由里面路径的名字来反向解析出路径,完成动态的重定向
url=reverse('ttt')
return redirect(url)
def test(request):
return HttpResponse('我是test页面')

需求:在模板内实现反向解析完成重定向

urls.py

from django.conf.urls import url
from django.contrib import admin


from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/',views.index),
# 这里的name就是给当前路径重命了一个名
url(r'^test/',views.test,name='ttt'),
]

views.py

from django.shortcuts import render,HttpResponse,redirect,reverse

def index(request):
return render(request,'index.html')
def test(request):
return HttpResponse('我是test页面')

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我是首页</title>
</head>
<body>
<h1>django的index页面</h1>
   # 固定格式{% url '地址名字' %}
<a href="{% url 'ttt' %}">模板下实现反向解析重定向</a>
</body>
</html>
原文地址:https://www.cnblogs.com/shizhengquan/p/10483048.html