Django视图中的args和kwargs

2024-04-20 09:47:59 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我已经找了很久了。我不能在django应用程序中将args和kwargs传递给视图吗?我必须独立定义每个关键字参数吗?

例如

#views.py
def someview(request, *args, **kwargs):
...

打电话给观景台的时候

response = someview(request,locals())

我好像做不到。 相反,我必须:

#views.py
def someview(request, somekey = None):
...

有什么原因吗?


Tags: djangopy视图应用程序参数定义requestdef
2条回答

如果要将关键字参数传递到视图中,正确的语法是:

def view(request, *args, **kwargs):
    pass

my_kwargs = dict(
    hello='world',
    star='wars'
)

response = view(request, **my_kwargs)

因此,如果locals()是关键字参数,则传入**locals()。我个人不会使用像locals()这样的隐式方法

问题是locals()返回字典。如果要使用**kwargs,则需要解压缩locals

response = someview(request,**locals())

当您像response = someview(request,locals())那样使用它时,实际上是将字典作为参数传递:

response = someview(request, {'a': 1, 'b': 2, ..})

但是当您使用**locals()时,您是这样使用它的:

response = someview(request, a=1, b=2, ..})

你可能想看看Unpacking Argument Lists

相关问题 更多 >