7.Django中页面重定向的使用 && path()中参数name的讲解
Posted 孤寒者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.Django中页面重定向的使用 && path()中参数name的讲解相关的知识,希望对你有一定的参考价值。
引子:
讲一个每个人都碰到过的情形:我们在页面中登录QQ空间的时候,登录成功后会跳转到你的QQ空间主页。
这就是本文要讲的内容——页面重定向!
第一部分:Django实战使用——页面重定向
1.项目目录下的urls.py文件:
from django.contrib import admin
from django.urls import path,re_path,include #include用来分配的
from . import views
urlpatterns = [ #主路由:只用来分配
path('admin/', admin.site.urls),
path('', views.index), #首页
path('music/', include("music.urls")),
]
2.项目目录下的views.py文件:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("这里是首页")
3.App music里面的urls.py文件:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [ #子路由
path("test01/",views.test01),
]
4.App music里面的views.py文件:
from django.shortcuts import render,redirect #redirect是重定向;
from django.http import HttpResponse
import time
# Create your views here.
def test01(request):
print("登录成功")
time.sleep(3)
return redirect("/") #如果登录成功,返回到首页! !做了路由跳转=====重定向!
5.如果现在在本地浏览器输入127.0.0.1:8000/music/test01,那么效果是等待3S后页面自动跳转到首页中!
第二部分:拓展——path()中name参数的使用
name参数可以给这个URL地址取一个合适的名字。通过给url取名字,以后在视图函数或者模板中使用这个URL,就只需要通过这个名字就可以使用。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。
1.项目目录下的urls.py文件:
from django.contrib import admin
from django.urls import path,re_path,include #include用来分配的
from . import views
urlpatterns = [ #主路由:只用来分配
path('admin/', admin.site.urls),
path('music/', include("music.urls")),
]
2.App music里面的urls.py文件:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [ #子路由
path("test01/",views.test01),
path("sing/",views.sing,{"name":"小明","age":18},name="bb"), # 这里就对此条path使用了参数name!
]
3.App music里面的views.py文件:
from django.shortcuts import render,redirect,reverse #redirect是重定向,reverse是将url的name解析成url的函数
from django.http import HttpResponse
import time
# Create your views here.
#音乐app下面的视图函数
def sing(request,**kwargs):
name=kwargs.get("name")
age=kwargs.get("age")
return HttpResponse("{}太帅了,年龄是{}".format(name,age))
#登录页
def test01(request):
print("登录成功")
time.sleep(3)
#下面两者作用一模一样:
# return redirect("/music/sing") #跳转到唱歌页面
return redirect(reverse("bb")) #reverse可以将当前这个bb解析为它所对应的url地址, 即:/music/sing
#解决无论url的地址如何改变,只要它的name属性不变这些关于他的重定向都可以正常执行!
4.在本地浏览器中输入:127.0.0.1:8000/music/test01,等待3S会跳转到唱歌页面。显示:小明太帅了,年龄是18
以上是关于7.Django中页面重定向的使用 && path()中参数name的讲解的主要内容,如果未能解决你的问题,请参考以下文章