Python技术迷

Django教程-快捷方式模块

整理:python架构师 Django 快捷方式模块是通常在视图函数/类中使用的辅助函数的集合。模块django.shortcuts中有许多可用的快捷方式。换句话说,这些函数/类为了方便起见引入了受控耦合。

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 -用于加载模板的模板引擎的名称。
示例 - 在以下示例中,我们渲染模板 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.")
我们已经讨论了一些提供对象控制的重要快捷方式。这些快捷方式还可以有效地处理潜在的错误。


1
热门推荐