Django 在 get_context 数据中获取 url 变量?
Django get url variables within get_context data?
说我有一个 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 个变量添加到
get_context_data()
之后的 context_data
- 或从
get
的自定义调用将其传递到 get_context_data
? (丑陋,因为基于 class 的视图期望相同的 get_context_data 签名)
url参数存储在view
的.kwargs
中。因此,您可以使用以下方式访问和呈现这些内容:
{{ view<strong>.kwargs.foo_id</strong> }}
传递了一个名为 view
的引用,它是处理请求时构造的 View
对象。因此,我们访问 View
对象的 .kwargs
属性,并在 kwargs
中查找 kwargs['foo_id']
.
Django 的一个特点是 TemplateView
[Django-doc] 将所有 kwargs
项目作为上下文数据传递,如果您的视图因此是 TemplateView
,那么您可以使用
<!-- only a TemplateView -->
{{ <b>foo_id</b> }}
说我有一个 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 个变量添加到
get_context_data()
之后的 - 或从
get
的自定义调用将其传递到get_context_data
? (丑陋,因为基于 class 的视图期望相同的 get_context_data 签名)
context_data
url参数存储在view
的.kwargs
中。因此,您可以使用以下方式访问和呈现这些内容:
{{ view<strong>.kwargs.foo_id</strong> }}
传递了一个名为 view
的引用,它是处理请求时构造的 View
对象。因此,我们访问 View
对象的 .kwargs
属性,并在 kwargs
中查找 kwargs['foo_id']
.
Django 的一个特点是 TemplateView
[Django-doc] 将所有 kwargs
项目作为上下文数据传递,如果您的视图因此是 TemplateView
,那么您可以使用
<!-- only a TemplateView -->
{{ <b>foo_id</b> }}