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.")  

我们已经讨论了一些提供对象控制的重要快捷方式。这些快捷方式还可以有效地处理潜在的错误。

标签: django语言, django教程, django技术, django学习, django学习教程, django下载, django开发, django入门教程, django进阶教程, django高级教程, django面试题, django笔试题, django编程思想