Инкапсулируйте аргумент, захваченный в (? P\ d +) как атрибут объекта запроса - PullRequest
0 голосов
/ 16 мая 2018

В urlpatterns Django отправляет запрос на получение и аргумент topic_id в views.py

url(r'^edit_topic/(?P<topic_id>\d+)$', views.edit_topic, name='edit_topic'),

В views.py передаются два аргумента

def topic(request, topic_id):
    """Show a single topic and all its entries."""
    topic = Topic.objects.get(id=topic_id)

Интересно, можно ли включить topic_id в request и отправить один единственный аргумент в views.py

def topic(request):
    topic = Topic.objects.get(id=request.topic_id)

Коды теперь будут с ошибкой,
но в деталях реализации Django нетрудно добавить атрибут 'topic_id' к объекту запроса.
В чем недостаток, если пакет topic_id под запрос?

1 Ответ

0 голосов
/ 16 мая 2018

Ну, это можно сделать, но нужно немного изменить urlpatterns.

url(r'^edit_topic/$', views.edit_topic, name='edit_topic'),

Когда вы создаете запрос как

<domain_name>/edit_topic?topic_id=<your_id>

Например, запрос будет выглядеть так

http://127.0.0.1:8000/edit_topic?topic_id=1000

В views.py при поступлении запроса вы можете выполнить операцию GET, чтобы получить значение

def topic(request):
    topic = Topic.objects.get(id=request.GET('topic_id'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...