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

mac2025-02-17  8

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)