Django 快捷方式

Django 快捷方式

Django快捷方式模块是一组通常用于视图函数/类中的辅助函数。模块 django.shortcuts 提供了许多快捷方式。换句话说,这些函数/类为方便起见引入了受控耦合。

render()

它将给定的模板与字典组合,返回具有渲染文本的 HttpResponse 对象。以下是 渲染() 函数的语法。

语法 –

render(request, template_name, context=None, content_type=None, status=None, using=None)

参数 –

下面是render()函数的参数。

  • request – 它用于生成响应。
  • template_name – 它接受模板名称并显示模板内容。

    可选参数 –

  • context – 它表示要添加到模板上下文的字典值。

  • content_type – 用于生成文档的MIME类型。默认为’text/html’。
  • status – 它显示响应的状态码。默认为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)

参数 –

  • A model: 将调用模型的get_absolute_url()函数。
  • A view name with arguments: 将使用urls.reverse()来解析名称。
  • A URL will be used as-is for the redirect location. 将直接使用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 – 要获取对象的模型类、管理器或QuerySet实例。
  • **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 – 从中获取列表的模型、管理器或QuerySet实例。
  • **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.")

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程