render()
render(request, template_name, context=None, content_type=None, status=None, using=None)
必选参数
- request
用于生成此响应的请求对象
- template_name
要使用的模板的全名或模板名称的序列。
可选参数
- context
添加到模板上下文的值的字典。默认情况下是一个空字典。如果字典中的值是可调用的,则视图将在渲染模板之前调用它。
- content_type
用于结果文档的MIME类型
- status
响应的状态代码,默认200
- using
用于加载模板的模板引擎
示例
from django.shortcuts import render
def my_view(request):
# View code here...
return render(request, 'myapp/index.html', {
'foo': 'bar',
}, content_type='application/xhtml+xml')
redirect()
redirect(to, *args, permanent=False, **kwargs)
将一个HttpResponseRedirect返回到传递的参数的适当URL。
示例
重定向地址
from django.shortcuts import redirect
def my_view(request):
...
obj = MyModel.objects.get(...)
return redirect(obj)
硬编码URL重定向
def my_view(request):
...
return redirect('/some/url/')
完整的URL
def my_view(request):
...
return redirect('https://example.com/')
参数permanent参数,如果设置为True会返回一个永久重定向
def my_view(request):
...
obj = MyModel.objects.get(...)
return redirect(obj, permanent=True)
get_object_or_404()
get_object_or_404(klass, *args, **kwargs)
必选参数
- klass
从中获取对象的Model类,Manager,或QuerySet实例
- **kwargs
查询参数,应采用get()和filter()接受的格式
示例
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.")
get_list_or_404()
get_list_or_404(klass, *args, **kwargs)
必选参数
- klass
从中获取列表的Model,Manager或QuerySet实例
- **kwargs
查询参数,应采用get()和filter()接受的格式
示例
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.")