(个人用)Django教程第二部分:django.shortcuts
1. 渲染(request, 模板, 上下文)
from django.http import HttpResponse
from django.template import loader
def index(request):
(中略)
template = loader.get_template('polls/index.html')
return HttpResponse(template.render(context, request))
使用django.shortcuts.render可以更简洁地编写代码,而不是使用django.http.HttpResponse和django.template.loader。
from django.shortcuts import render
# ...
def index(request):
(中略)
return render(request, 'polls/index.html', context)
获取对象或者返回404错误(对象, 主键)
from django.http import Http404
from django.shortcuts import render
from .models import Question
# ...
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404("Question does not exist")
return render(request, 'polls/detail.html', {'question': question})
可以导入`django.shortcuts.get_object_or_404`替换`django.http.Http404`,这样可以更加简洁地编写代码,无需使用try~except语句进行分支判断。
from django.shortcuts import get_object_or_404, render
from .models import Question
# ...
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', {'question': question})
順便提一下,看起来也有一个叫做 get_list_or_404() 的函数。这个函数的工作原理与 get_object_or_404() 相同,只是使用了 filter() 而不是 get() 方法。