(三)页面重定向及模板渲染

1.页面重定向

页面重定向就是在访问旧的页面时,会跳到新的页面。
方法一:
直接redirect
新建的APP目录:book/views.py

from django.shortcuts import render,redirect,reverse
from django.http import HttpResponse
def article(request):
    # return  HttpResponse("旧的页面")
    #页面重定向
    return  redirect("/book/article_new/")
def article_new(request):
    return HttpResponse("新的页面")

book/urls.py

from django.contrib import admin
from django.urls import path,re_path
from . import views
urlpatterns = [
    path('index/',views.index),
    path('getArgs/',views.getArgs,{'name':'xiaoming'}),
    path('article/',views.article),
    path('article_new/',views.article_new)
]

redirect中的‘article_new’和path中’article_new’对应

方法二:
通过name属性名
name参数可以给url取一个合适的名字,在view或者模板中使用这个url,就只需要通过这个名字就可以了。name的目的是:防止url的规则更改,会导致其他用了这个url的地方都需要更改,如果取名字,就不需要做任何改动了。
book/views.py

def article(request):
    # return  HttpResponse("旧的页面")
    #页面重定向
    # return  redirect("/book/article_new/")
    return redirect(reverse('article_new'))
def article_new(request):
    return HttpResponse("新的页面")

book/urls.py

from django.contrib import admin
from django.urls import path,re_path
from . import views
urlpatterns = [
    path('index/',views.index),
    path('getArgs/',views.getArgs,{'name':'xiaoming'}),
    path('article/',views.article,{'name':'xiaoming'}),
    path('article_new/',views.article_new,name='article_new')
]

当book/views.py中重定向’article_new’时,会匹配path中name的属性。不管前面名字如何。

2.模板渲染

模板存放的位置
1.在主目录下创建一个templates目录用来存放所有的html的模板文件。
2.templates目录里面在新建各个以app名字命名的目录来存放各个app中模板文件。

目录如下,
在这里插入图片描述
可以在templates/book目录下新建html文件,
在这里插入图片描述

然后在根目录下的settings.py文件中拼接templates
在这里插入图片描述

render方法时django封装好用来渲染模板的方法。

下一步,

from django.template.loader import get_template
def book_index(request):
    #获取模板
    s = get_template('book/book_index.html')
    #渲染页面
    html = s.render({'name':'xiaoming'})
    return  HttpResponse(html)
from django.contrib import admin
from django.urls import path,re_path
from . import views
urlpatterns = [
    path('index/',views.index),
    path('getArgs/',views.getArgs,{'name':'xiaoming'}),
    path('article/',views.article,{'name':'xiaoming'}),
    path('article_new/',views.article_new,name='article_new'),
    path('book_index/',views.book_index)
]

在这里插入图片描述
‘xiaoming’这个name,就是在渲染页面的时候传的。

另外一种方法,

def book_index1(request,name):
    return render(request,'book/book_index.html',{'name':name})
 path('book_index1/<name>',views.book_index1)

也可以通过上下文管理器context传参,

def book_index1(request,name,age):
    return render(request,'book/book_index.html',context={'name':name,'age':age})
path('book_index1/<name>&<age>',views.book_index1)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薄衫啊

三克油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值