from django.shortcuts import xxx

1. 常用快捷方法

方法 描述
render() 返回渲染后的 HttpResponse 对象
redirect() 根据传来的 url 参数返回 HttpResponseRedirect 对象
get_object_or_404() 查询某对象,未找到则返回404
get_list_or_404() 与上面相应

1.1. render()

返回渲染后的 HttpResponse 对象

  1. request: 第一位,视图函数参数 request
  2. template: 第二位,模板位置
  3. context: 第三位,传入页面的数据,字典
  4. content_type: 用于生成 MIME 类型(默认 DEFAULT_CONTENT_TYPE 设置的值)
  5. status: 状态码(默认 200)
  6. using: 用于加载模型的模板引擎
  1. from django.shortcuts import render
  2. def my_view(request):
  3. #...
  4. return render(request, 'myapp/index.html', {
  5. 'title':'tItLe'
  6. }, content_type='application/xhtml+xml')

1.2. redirect()

根据传来的 url 参数返回 HttpResponseRedirect 对象

  1. to: 传入的 URL 参数,可以是
    1. 模型(将调用模型的 get_absolute_url() 反向解析出 URL)
    2. 视图名:URLconf 中的视图名称
    3. URL:绝对/相对均可
  2. permanent: 是否永久重定向(默认 False)
  1. from django.shortcuts import render
  2. def my_view(request):
  3. # 调用对象的 get_absolute_url()
  4. obj = MyModel.objects.get(...)
  5. return redirect(obj)
  6. # 视图名
  7. return redirect('example:article', arg='val')

1.3. get_object_or_404()

查询某对象,未找到则返回404

  1. klass: Model类名或QuerySet
  2. **kwargs: get() 可接受的查询参数
  1. from django.shortcuts import get_object_or_404
  2. def my_view(request):
  3. # Model类名
  4. obj = get_object_or_404(MyModel, pk=1)
  5. # QuerySet 1
  6. queryset = MyModel.objects.filter(title__startswith='M')
  7. obj = get_object_or_404(queryset, pk=1)
  8. # QuerySet 2
  9. obj = get_object_or_404(MyModel, title__startswith='M', pk=1)
  10. # QuerySet 关联对象
  11. author = Author.objects.get(name='Ming')
  12. obj = get_object_or_404(author.book_set, title='How to Django')