render(request, template_name, context=None, content_type=None, status=None, using=None)
将给定的模板与给定的上下文字典组合在一起,并以渲染的文本返回一个HttpResponse对象。
- request:必选,请求对象
- template_name: 必选,要使用的模板的全名或模板名称的序列.
- context:要添加到模板上下文的值的字典。
from django.shortcuts import render
def my_view(request):
return render(request, 'myapp/index.html', {
'foo': 'bar',
}, content_type='application/xhtml+xml')
redirect(to, *args, permanent=False, **kwargs)
to:参数可以是一个模型对象(模型的get_absolute_url()函数会被调用),可以是一个视图名,也可以是硬编码URL。
from django.shortcuts import redirect
def my_view(request):
obj = MyModel.objects.get(...)
return redirect(obj)
def my_view(request):
return redirect('some-view-name', foo='bar')
def my_view(request):0
return redirect('https://example.com/')
示例:
from django.shortcuts import get_object_or_404
def my_view(request):
obj = get_object_or_404(MyModel, pk=1)
等同于:
from django.http import Http404
def my_view(request):
try:
obj = MyModel.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404("No MyModel matches the given query.")
示例:
from django.shortcuts import get_list_or_404
def my_view(request):
my_objects = get_list_or_404(MyModel, published=True)
等同于:
from django.http import Http404
def my_view(request):
my_objects = list(MyModel.objects.filter(published=True))
if not my_objects:
raise Http404("No MyModel matches the given query.")