django - CreateView 没有从 urls.py 接收 Kwargs

标签 django django-views

我一直在为我的 View 使用 urls.py 中的 path(...) 中提供的参数,这是一个 TemplateView

现在,我一直在尝试使用类似的模板执行相同的操作,但使用 CreateView。经过一些调试后,我意识到由于某种原因,CreateView 似乎没有收到 urls.py 路径中定义的 kwargs。例如:

url.py

path('product/<int:pk>/', views.SomeViewClass.as_view(), {"foo": "bar"}, name='detail_product', ),

View .py

class SomeViewClass(TemplateView):
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        section = kwargs["foo"]

以上工作。但是,这不会:

url.py

path('create/', views.OtherClassView.as_view(), {"foo": "bar"}, name='create'),

View .py

class OtherClassView(CreateView):
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        section = kwargs["foo"]

有什么明显的解决方法吗?除了通过完全不同的管道找出这个参数之外?

最佳答案

.get_context_data(…) method [Django-doc]确实没有接收 URL 参数,在这种情况下,**kwargs 是需要包含在上下文中的项目的字典。

您可以使用 self.kwargs 来访问 URL 参数:

class SomeViewClass(TemplateView):
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        section = <b>self.kwargs['foo']</b>

关于django - CreateView 没有从 urls.py 接收 Kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67489347/

相关文章:

Django Rest Framework - 插入时从值获取外键 ID

python - 有日期时间±无穷大吗?

python - 如何在 Django Admin 的自定义方法中获取当前用户?

python - 通过 Viewset Django Rest Framework 进行部分更新失败

python - 导入错误(无法导入姓名 contactForm )

django - 为什么 Django 函数 django.views.static.serve() 不安全?

html - 超出 Django 最大递归深度。查看无限循环

python - 为什么 azure 应用程序服务 django 部署不断失败?

python - Django 表单不显示,只有按钮(新)

django - APIView 类和 View 集类之间的区别?