Django Forms:视图中的空 kwargs
Django Forms: Empty kwargs from Views
我正在尝试使用视图中的参数初始化 Django 表单。但是,当我尝试在表单的 init 中使用 kwargs 时,我发现它始终是空的。为什么会这样?我错过了什么吗?
我的观点(文件名:“FirstView.py”):
def create_userStory(request, proyect_id):
if request.method=='POST':
auxForm = UserStoryForm(request.POST, proyect_id=proyect_id)
我的表格(文件名:“forms.py”):
class UserStoryForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
proyectId = kwargs.pop('proyect_id', None)
super(UserStoryForm, self).__init__(*args, **kwargs)
team = Team.objects.get(proyect_id=proyectId)
我在我的表单中尝试了 debugging/printing kwargs,但我总是得到 {},这意味着参数来自观点没有通过。
之前我尝试解决这些现有问题:
django form: Passing parameter from view.py to forms gives out error
Django Forms: pass parameter to form
Django formset - empty kwargs
签名中的 *args
和 **kwargs
用于捕获未被其他定义的参数位置占用的参数。
所有未使用的未命名参数将放在列表 args
中,所有命名参数将放在字典 kwargs
中。您可以根据需要更改名称。
一个例子:
def function_1(a, b, *args, **kwargs):
像
这样的电话
function_1(1, 2, 3, 4, c=5, d=6)
将导致以下变量在 function_1 中可用:
a = 1
b = 2
args = (3, 4)
kwargs = {'c': 5, 'd': 6}
所以应用于你的问题意味着只要你没有任何命名参数,你就会有一个空 kwargs
。
我遇到了同样的问题。
经过一个小时的搜索 (...),我发现在我对 __init__
的调用中:
myModelForm(request.POST, namedargument=val)
val
实际上是 None
当我认为它包含一个值时。
然后,对于 __init__
:如果 namedargument=None
==> namedargument
单独。
kwargs
变为 args
!
这就是 kwargs 为空的原因。
所以,请检查您传递的值,它可能 None
是错误的。
(我知道,这是一个 2 年的答案,但我很想在一小时前找到这个...)
我正在尝试使用视图中的参数初始化 Django 表单。但是,当我尝试在表单的 init 中使用 kwargs 时,我发现它始终是空的。为什么会这样?我错过了什么吗?
我的观点(文件名:“FirstView.py”):
def create_userStory(request, proyect_id):
if request.method=='POST':
auxForm = UserStoryForm(request.POST, proyect_id=proyect_id)
我的表格(文件名:“forms.py”):
class UserStoryForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
proyectId = kwargs.pop('proyect_id', None)
super(UserStoryForm, self).__init__(*args, **kwargs)
team = Team.objects.get(proyect_id=proyectId)
我在我的表单中尝试了 debugging/printing kwargs,但我总是得到 {},这意味着参数来自观点没有通过。
之前我尝试解决这些现有问题:
django form: Passing parameter from view.py to forms gives out error
Django Forms: pass parameter to form
Django formset - empty kwargs
签名中的 *args
和 **kwargs
用于捕获未被其他定义的参数位置占用的参数。
所有未使用的未命名参数将放在列表 args
中,所有命名参数将放在字典 kwargs
中。您可以根据需要更改名称。
一个例子:
def function_1(a, b, *args, **kwargs):
像
这样的电话function_1(1, 2, 3, 4, c=5, d=6)
将导致以下变量在 function_1 中可用:
a = 1
b = 2
args = (3, 4)
kwargs = {'c': 5, 'd': 6}
所以应用于你的问题意味着只要你没有任何命名参数,你就会有一个空 kwargs
。
我遇到了同样的问题。
经过一个小时的搜索 (...),我发现在我对 __init__
的调用中:
myModelForm(request.POST, namedargument=val)
val
实际上是 None
当我认为它包含一个值时。
然后,对于 __init__
:如果 namedargument=None
==> namedargument
单独。
kwargs
变为 args
!
这就是 kwargs 为空的原因。
所以,请检查您传递的值,它可能 None
是错误的。
(我知道,这是一个 2 年的答案,但我很想在一小时前找到这个...)