Diango教程-Django 快捷方式模块
Django 快捷方式模块是通常在视图函数/类中使用的辅助函数的集合。模块django.shortcuts中有许多可用的快捷方式。换句话说,这些函数/类为了方便起见引入了受控耦合。
render()
它将给定模板与字典结合起来,并返回带有渲染文本的HttpResponse对象。以下是render()函数的语法。
句法 -
render(request, template_name, context=None, content_type=None, status=None, using=None)
参数 -
以下是 render() 函数的参数。
- 请求 -用于生成响应。
- template_name -它采用模板名称并显示模板内容。
可选参数 -
- context -它表示要添加到模板上下文的值字典。
- content_type -用于生成的文档的 MIME 类型。默认为“text/html”。
- 状态 -显示响应的状态代码。默认为 200。
- using -用于加载模板的模板引擎的名称。
示例 -在以下示例中,我们渲染模板 newapp/index.html。
from django.shortcuts import render
def new_view(request):
# View code here...
return render(request, 'newapp/index.html', {
'foo': 'bar',
}, content_type='application/xhtml+xml')
它相当于下面的代码。
def new_view(request):
# View code here...
t = loader.get_template('newapp/index.html')
c = {'foo': 'bar'}
return HttpResponse(t.render(c, request), content_type='application/xhtml+xml')
redirect()
redirect ()函数用于重定向到特定的 URL。它针对所传递的参数将HttpResponseRedirect返回到相应的 URL。让我们看看下面的语法。
句法 -
redirect(to, *args, permanent=False, **kwargs)
参数 -
- 模型:将调用模型的 get_absolute_url() 函数。
- 带参数的视图名称: urls.reverse() 将用于反向解析名称。
- URL 将按原样用于重定向位置。
例子 -
def blog_view(request, post_id):
blog = Post.objects.get(pk=post_id)
return redirect(blog)
# equivalent to: return HttpResponseRedirect(blog.get_absolute_url())
def blog_view(request, post_id):
return redirect('blog_details', id=post_id)
# equivalent to: return HttpResponseRedirect(reverse('blog_details', args=(post_id, )))
def relative_url_view(request):
return redirect('/blogs/archive/')
# equivalent to: return HttpResponseRedirect('/blogs/archive/')
默认情况下,redirect()返回临时重定向。但是,如果设置为 True,我们可以返回永久重定向。
def my_view(request):
obj = MyModel.objects.get(...)
return redirect(obj, permanent=True)
get_object_or_404()
如果未找到搜索的对象,则返回DoesNotExist异常。另一方面,get() 方法引发Http404。
参数
- Klass -从中获取对象的模型类、管理器或查询集实例。
- **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()
它返回给定模型管理器上的 filter() 结果转换为列表,如果结果列表为空,则引发 Http404。语法与 get_object_or_404 相同。
参数
- klass -从中获取列表的模型、管理器或查询集实例。
- **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.")
我们已经讨论了一些提供对象控制的重要快捷方式。这些快捷方式还可以有效地处理潜在的错误。