Django получает переменные url в данных get_context?
Допустим, у меня есть url следующего вида
path(
'foo/<int:foo_id>/edit/',
views.FooView.as_view(),
name='foo',
),
и вид, подобный этому:
def get(self, request, foo_id):
Я нахожу распространенной идиомой получение переменной URL foo_id в контексте.
Единственное, к чему контекст имеет доступ по умолчанию, это request. Я попробовал проверить request и request.GET и ничего не увидел.
Есть ли способ лучше, чем:
- Вручную добавлять переменные url в
context_dataпослеget_context_data() - или передавая их в
get_context_dataиз пользовательского вызова изget? (некрасиво, потому что представления, основанные на классах, ожидают той же сигнатуры get_context_data) .
Параметры url хранятся в .kwargs в view. Таким образом, вы можете получить доступ и отобразить их с помощью:
{{ view.kwargs.foo_id }}
Передается ссылка с именем view, которая является объектом View, построенным при обработке запроса. Таким образом, мы обращаемся к атрибуту .kwargs этого объекта View, а в kwargs ищем kwargs['foo_id'].
Особенностью Django является то, что TemplateView [Django-doc] передает все свои kwargs элементы как контекстные данные, если ваше представление, таким образом, является TemplateView, то вы можете отобразить это с помощью
<!-- only a TemplateView -->
{{ foo_id }}