gpt4 book ai didi

python - Django - 将属性值传递给 TemplateView 中的 as_view

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:08 24 4
gpt4 key购买 nike

这是我的观点(简化):

class MyView(TemplateView):
def __init__(self):
self.foo = 'bar'
super(MyView, self).__init__()

这是在 urls.py 中:

url(
r'^/foo/$',
MyView.as_view(foo='baz'), name='my_view'
)

当我运行它时,出现以下错误:

TypeError: MyView() received an invalid keyword 'foo'. as_view only accepts arguments that are already attributes of the class.

为什么?我认为这会奏效。 :/

至少根据这篇文章: http://reinout.vanrees.org/weblog/2011/08/24/class-based-views-walkthrough.html#class-view

如果我理解正确,这应该将属性 foo 设置为在 as_view 中传递的值 'baz'as_view 中没有任何属性,该值应为 'bar',如 __init__ 中所定义。

最佳答案

您在 __init__() 中为类的实例显式设置了一个值。但是,该类本身仍然没有属性 foo,因为它不知道实例上的动态属性:hasattr(MyView, 'foo') 总是返回 错误

这会像您预期的代码那样工作:

class MyView(TemplateView):
foo = 'bar'

url(
r'^/foo/$',
MyView.as_view(foo='baz'), name='my_view'
)

关于python - Django - 将属性值传递给 TemplateView 中的 as_view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com