Модуль ярлыков Django shortcuts – вспомогательные функции

Модуль ярлыков Django shortcuts – вспомогательные функции

KOD

Модуль ярлыков Django представляет собой набор вспомогательных функций, которые обычно используются в функциях и классах представления в Python. В модуле django.shortcuts доступно множество ярлыков. Другими словами, эти функции/классы вводят управляемую связь для удобства.

render()

Функция render() объединяет данный шаблон со словарем и возвращает объект HttpResponse с отображаемым текстом. Ниже приведен синтаксис функции render().

Синтаксис –

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

Параметры:

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) 

Параметры:

 model: будет вызвана функция 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 — класс модели, менеджер или экземпляр 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 — экземпляр Model, Manager или 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.") 

Мы обсудили несколько важных сочетаний клавиш, обеспечивающих контроль над объектами. Эти ярлыки также позволяют эффективно обрабатывать потенциальные ошибки.

Report Page