Django教程-快捷方式模块
整理:python架构师
Django 快捷方式模块是通常在视图函数/类中使用的辅助函数的集合。模块django.shortcuts中有许多可用的快捷方式。换句话说,这些函数/类为了方便起见引入了受控耦合。
1
热门推荐
render()
它将给定模板与字典结合起来,并返回带有渲染文本的HttpResponse对象。以下是render()函数的语法。 句法 -render(request, template_name, context=None, content_type=None, status=None, using=None)
以下是 render() 函数的参数。参数 -
- 请求 -用于生成响应。
- template_name -它采用模板名称并显示模板内容。
👉点击领取:最全Python资料合集可选参数 -
- context -它表示要添加到模板上下文的值字典。
- content_type -用于生成的文档的 MIME 类型。默认为“text/html”。
- 状态 -显示响应的状态代码。默认为 200。
- using -用于加载模板的模板引擎的名称。
它相当于下面的代码。from django.shortcuts import renderdef 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 将按原样用于重定向位置。
默认情况下,redirect()返回临时重定向。但是,如果设置为 True,我们可以返回永久重定向。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/')
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_404def my_view(request):obj = get_object_or_404(MyModel, pk=1)
from django.http import Http404def 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_404def my_view(request):my_objects = get_list_or_404(MyModel, published=True)
我们已经讨论了一些提供对象控制的重要快捷方式。这些快捷方式还可以有效地处理潜在的错误。from django.http import Http404def my_view(request):my_objects = list(MyModel.objects.filter(published=True))if not my_objects:raise Http404("No MyModel matches the given query.")