1.使用render,可以返回模板頁面同時可附帶數據(json格式)用於展示。
from django.shortcuts import render
def test(request):
data = {'success': 0}
return render(request, 'show.html', {'data': data})
在render中也可以不帶數據,僅返回頁面進行展示。
from django.shortcuts import render
def test(request):
return render(request, 'show.html')
2.使用HttpResponse返回字符串,頁面中將以不帶格式的文本方式在頁面中僅展示這串字符。
from django.http import HttpResponse
def test(request):
return HttpResponse("test")
3.使用HttpResponseRedirect重定向頁面。
from django.http import HttpResponseRedirect
def test(request):
return HttpResponseRedirect('/') #轉向首頁
令當前請求從一個視圖轉到另外一個視圖,此時不直接展示任何數據,直接向新的頁面uel發起請求,其中的參數字符串爲新的頁面路徑,例如'/index/',應在urls.py文件中的urlpatterns參數中配置index頁面的路由。
4.使用redirect方法重定向URL。
from django.shortcuts import redirect
from django.urls import reverse
# 案例1
def my_view(request):
...
return redirect('/index/')
# 案例2
def my_view(request):
...
return redirect('https://www.baidu.com/')
# 案例3
def my_view(request):
...
return redirect(reverse('blog:article_list'))
HttpResponseRedirect能支持的URL重定向,redirect都支持。
5.使用reverse方法,對已命名的URL進行反向解析並傳遞相應的參數(args或帶key的參數kargs)。
# 使用方法一:模型中自定義get_absolute_url,並傳遞參數args
from django.urls import reverse
def get_absolute_url(self):
return reverse('blog:article_detail', args=[str(self.pk), self.slug])
# 使用方法二:或者在視圖中對命名URL進行解析,傳遞參數kargs,再使用HttpResponseDirect和redict進行重定向
from django.urls import reverse
from django.shortcuts import redirect
def my_view(request):
...
return redirect(reverse('admin:app_list', kwargs={'app_label': 'auth'}))
# 或者: return HttpResponseRedirect(reverse('blog:article_list'))
6.使用render_to_response返回頁面。
from django.shortcuts import render_to_response
def current_datetime(request):
data = {'success': 0}
return render_to_response('test.html', {'data': data})
render_to_response()完成了加載模板、填充 context 、將經解析的模板結果返回爲 HttpResponse 對象的過程。
參考文檔
①URL重定向的HttpResponseDirect, redirect和reverse的用法詳解:
https://blog.csdn.net/weixin_42134789/article/details/81505963
②render 和 render_to_response的區別:
https://www.jianshu.com/p/f9455da2fc97
③用django實現url跳轉的幾種方法總結:
https://blog.csdn.net/lvze0321/article/details/53302189
④其他:
https://blog.csdn.net/zhaoyangjian724/article/details/79019451
https://www.jianshu.com/p/4b56516e0741
https://blog.csdn.net/qq_37035946/article/details/90713994