РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
277 of 818 menu

Конвертер int

Конвертер int применяется в маршрутах Django для захвата целочисленных значений из URL и преобразования их в Python-объекты типа int. Он используется в функции path для определения динамических сегментов URL, которые должны быть целыми числами. Конвертер автоматически проверяет, что переданное значение является целым числом, и передает его в представление как аргумент типа int.

Синтаксис

from django.urls import path from myapp.views import my_view urlpatterns = [ path('articles/<int:article_id>/', my_view, name='article_detail'), ]

Пример

Давайте создадим представление, которое принимает целочисленный идентификатор статьи из URL:

from django.http import HttpResponse from myapp.models import Article def article_detail(request, article_id): try: article = Article.objects.get(id=article_id) return HttpResponse(f"Article title: {article.title}") except Article.DoesNotExist: return HttpResponse("Article not found", status=404)

Результат выполнения кода при обращении к URL '/articles/42/':

"Article title: Django Basics"

Пример

Рассмотрим использование конвертера int с несколькими параметрами в одном URL:

from django.urls import path from myapp.views import article_range urlpatterns = [ path('articles/<int:start_id>/to/<int:end_id>/', article_range, name='article_range'), ]

Создадим представление, которое обрабатывает оба целочисленных параметра:

from django.http import HttpResponse from myapp.models import Article def article_range(request, start_id, end_id): articles = Article.objects.filter(id__gte=start_id, id__lte=end_id) titles = [article.title for article in articles] return HttpResponse(f"Articles: {', '.join(titles)}")

Результат выполнения кода при обращении к URL '/articles/1/to/5/':

"Articles: Django Basics, Advanced Django, Django REST, Django Forms, Django Testing"

Пример

Используем конвертер int с параметрами в виде строки запроса:

from django.urls import path from myapp.views import user_posts urlpatterns = [ path('user/<int:user_id>/posts/', user_posts, name='user_posts'), ]

Создадим представление, которое использует идентификатор пользователя для получения постов:

from django.http import HttpResponse from myapp.models import Post, User def user_posts(request, user_id): try: user = User.objects.get(id=user_id) posts = Post.objects.filter(author=user) post_titles = [post.title for post in posts] return HttpResponse(f"Posts by {user.username}: {', '.join(post_titles)}") except User.DoesNotExist: return HttpResponse("User not found", status=404)

Результат выполнения кода при обращении к URL '/user/3/posts/':

"Posts by john_doe: My First Post, Python Tips, Django ORM Guide"

Смотрите также

  • конвертер str,
    который преобразует строковые параметры из URL
  • конвертер slug,
    который преобразует слаг-параметры из URL
  • конвертер uuid,
    который преобразует UUID-параметры из URL
  • функция path,
    которая определяет маршруты в Django
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить