from django.shortcuts import xxx
1. 常用快捷方法
方法 | 描述 |
---|---|
render() | 返回渲染后的 HttpResponse 对象 |
redirect() | 根据传来的 url 参数返回 HttpResponseRedirect 对象 |
get_object_or_404() | 查询某对象,未找到则返回404 |
get_list_or_404() | 与上面相应 |
1.1. render()
返回渲染后的 HttpResponse 对象
- request: 第一位,视图函数参数 request
- template: 第二位,模板位置
- context: 第三位,传入页面的数据,字典
- content_type: 用于生成 MIME 类型(默认 DEFAULT_CONTENT_TYPE 设置的值)
- status: 状态码(默认 200)
- using: 用于加载模型的模板引擎
from django.shortcuts import render
def my_view(request):
#...
return render(request, 'myapp/index.html', {
'title':'tItLe'
}, content_type='application/xhtml+xml')
1.2. redirect()
根据传来的 url 参数返回 HttpResponseRedirect 对象
- to: 传入的 URL 参数,可以是
- 模型(将调用模型的 get_absolute_url() 反向解析出 URL)
- 视图名:URLconf 中的视图名称
- URL:绝对/相对均可
- permanent: 是否永久重定向(默认 False)
from django.shortcuts import render
def my_view(request):
# 调用对象的 get_absolute_url()
obj = MyModel.objects.get(...)
return redirect(obj)
# 视图名
return redirect('example:article', arg='val')
1.3. get_object_or_404()
查询某对象,未找到则返回404
- klass: Model类名或QuerySet
- **kwargs: get() 可接受的查询参数
from django.shortcuts import get_object_or_404
def my_view(request):
# Model类名
obj = get_object_or_404(MyModel, pk=1)
# QuerySet 1
queryset = MyModel.objects.filter(title__startswith='M')
obj = get_object_or_404(queryset, pk=1)
# QuerySet 2
obj = get_object_or_404(MyModel, title__startswith='M', pk=1)
# QuerySet 关联对象
author = Author.objects.get(name='Ming')
obj = get_object_or_404(author.book_set, title='How to Django')