欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-27 11:52:28
...

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)

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