shortcut function,叫成短函数好像有点点别扭。。。都是一些常用的函数,可以让我们少打一些代码
render
快速渲染视图
render(request, template_name, context=None, content_type=None, status=None, using=None)
示例
from django.shortcuts import render
def my_view(request):
return render(request, 'myapp/index.html', {
'foo': 'bar',
}, content_type='application/xhtml+xml')
render_to_response
和上面那个函数差不多,少了个requset参数
render_to_response(template_name, context=None, content_type=None, status=None, using=None)
redirect
重定向
redirect(to, permanent=False, *args, **kwargs)
通过对象重定向
from django.shortcuts import redirect
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object)
使用reverse重定向并且带参
def my_view(request):
...
return redirect('some-view-name', foo='bar')
直接重定向
def my_view(request):
...
return redirect('/some/url/')
get_object_or_404
获取某个对象,查询失败则返回404
from django.shortcuts import get_object_or_404
def my_view(request):
my_object = get_object_or_404(MyModel, pk=1)
当然也可以给个query_set
queryset = Book.objects.filter(title__startswith='M')
get_object_or_404(queryset, pk=1)
还可以简化成这样
get_object_or_404(Book, title__startswith='M', pk=1)
也可以用外键字段
author = Author.objects.get(name='Roald Dahl')
get_object_or_404(author.book_set, title='Matilda')
get_list_or_404
查询列表,出错则返回404
from django.shortcuts import get_list_or_404
def my_view(request):
my_objects = get_list_or_404(MyModel, published=True)