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