Skip to content

Latest commit

 

History

History
65 lines (58 loc) · 1.89 KB

快捷函数.md

File metadata and controls

65 lines (58 loc) · 1.89 KB

render()

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()

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/')

get_object_or_404()

示例:

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()

示例:

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.")