无法在 Django 上填写自定义选择字段表单
Unable to fill a custom choicefield form on Django
我是 DJango 的新手,我正在尝试用自定义数据填写一个选择字段表单,但我收到一个我不太理解的错误。
在我的 views.py
我有:
def simpleDeploy(request):
networkList = getDetailsNetworkPartitions(request)
policiesList = getDetailsApplicationPolicies(request)
if request.method == 'POST':
abs(5) #Don't do nothing by the moment, I need put something or I get an error
else:
simpleForm = SimpleDeploy(netList=networkList, polList=policiesList)
return render(request, 'apacheStratos/simpleDeploy.html', {'form': simpleForm})
我的 forms.py
是:
class SimpleDeploy(forms.Form):
def __init__(self, networkList, policiesList, *args, **kwargs):
super(SimpleDeploy, self).__init__(*args, **kwargs)
if networkList and policiesList:
self.fields['networkPartitions'] = forms.ChoiceField(choices=networkList)
self.fields['applicationPolicies'] = forms.ChoiceField(choices=policiesList)
else:
self.fields['networkPartitions'] = forms.ChoiceField(choices='No network partitions found')
self.fields['applicationPolicies'] = forms.ChoiceField(choices='No application policies found')
Django 抛出的错误是:__init__() takes at least 3 arguments (1 given)
在行 simpleForm = SimpleDeploy(netList=networkList, polList=policiesList)
我不知道为什么说它需要 3 个参数,如果我传递 2 个参数则给出 1 个参数。
我做错了什么?谢谢。
编辑错误和回溯:
错误:
TypeError at /stratos/simpleDeploy
__init__() takes at least 3 arguments (1 given)
Request Method: GET
Request URL: http://127.0.0.1:8000/stratos/simpleDeploy
Django Version: 1.8.12
Exception Type: TypeError
Exception Value:
__init__() takes at least 3 arguments (1 given)
Exception Location: /home/iago/Escritorio/tfm/website/apacheStratos/views.py in simpleDeploy, line 60
Python Executable: /usr/bin/python2.7
Python Version: 2.7.6
Python Path:
['/home/iago/Escritorio/tfm/website',
'/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg',
'/home/iago/Escritorio/tfm/website',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
Server time: Thu, 14 Jul 2016 11:39:42 +0000
回溯:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/stratos/simpleDeploy
Django Version: 1.8.12
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'contact',
'menu',
'catalog',
'apacheStratos')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/iago/Escritorio/tfm/website/apacheStratos/views.py" in simpleDeploy
60. simpleForm = SimpleDeploy(netList=networkList, polList=policiesList)
Exception Type: TypeError at /stratos/simpleDeploy
Exception Value: __init__() takes at least 3 arguments (1 given)
您似乎使用了不同的键,并且缺少位置参数。您发送的参数被视为 kwargs
.
在表单的 __init__
中,您需要以下参数
def __init__(self, networkList, policiesList, *args, **kwargs):
但是您发送它时使用了键 netList
和 polList
因此出现了错误。
尝试:
simpleForm = SimpleDeploy(networkList=netList, policiesList=polList)
甚至只是
simpleForm = SimpleDeploy(netList, polList)
请注意,我不知道您的局部变量名称是什么,因此请相应地更新它们。
我是 DJango 的新手,我正在尝试用自定义数据填写一个选择字段表单,但我收到一个我不太理解的错误。
在我的 views.py
我有:
def simpleDeploy(request):
networkList = getDetailsNetworkPartitions(request)
policiesList = getDetailsApplicationPolicies(request)
if request.method == 'POST':
abs(5) #Don't do nothing by the moment, I need put something or I get an error
else:
simpleForm = SimpleDeploy(netList=networkList, polList=policiesList)
return render(request, 'apacheStratos/simpleDeploy.html', {'form': simpleForm})
我的 forms.py
是:
class SimpleDeploy(forms.Form):
def __init__(self, networkList, policiesList, *args, **kwargs):
super(SimpleDeploy, self).__init__(*args, **kwargs)
if networkList and policiesList:
self.fields['networkPartitions'] = forms.ChoiceField(choices=networkList)
self.fields['applicationPolicies'] = forms.ChoiceField(choices=policiesList)
else:
self.fields['networkPartitions'] = forms.ChoiceField(choices='No network partitions found')
self.fields['applicationPolicies'] = forms.ChoiceField(choices='No application policies found')
Django 抛出的错误是:__init__() takes at least 3 arguments (1 given)
在行 simpleForm = SimpleDeploy(netList=networkList, polList=policiesList)
我不知道为什么说它需要 3 个参数,如果我传递 2 个参数则给出 1 个参数。
我做错了什么?谢谢。
编辑错误和回溯:
错误:
TypeError at /stratos/simpleDeploy
__init__() takes at least 3 arguments (1 given)
Request Method: GET
Request URL: http://127.0.0.1:8000/stratos/simpleDeploy
Django Version: 1.8.12
Exception Type: TypeError
Exception Value:
__init__() takes at least 3 arguments (1 given)
Exception Location: /home/iago/Escritorio/tfm/website/apacheStratos/views.py in simpleDeploy, line 60
Python Executable: /usr/bin/python2.7
Python Version: 2.7.6
Python Path:
['/home/iago/Escritorio/tfm/website',
'/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg',
'/home/iago/Escritorio/tfm/website',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
Server time: Thu, 14 Jul 2016 11:39:42 +0000
回溯:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/stratos/simpleDeploy
Django Version: 1.8.12
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'contact',
'menu',
'catalog',
'apacheStratos')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/iago/Escritorio/tfm/website/apacheStratos/views.py" in simpleDeploy
60. simpleForm = SimpleDeploy(netList=networkList, polList=policiesList)
Exception Type: TypeError at /stratos/simpleDeploy
Exception Value: __init__() takes at least 3 arguments (1 given)
您似乎使用了不同的键,并且缺少位置参数。您发送的参数被视为 kwargs
.
在表单的 __init__
中,您需要以下参数
def __init__(self, networkList, policiesList, *args, **kwargs):
但是您发送它时使用了键 netList
和 polList
因此出现了错误。
尝试:
simpleForm = SimpleDeploy(networkList=netList, policiesList=polList)
甚至只是
simpleForm = SimpleDeploy(netList, polList)
请注意,我不知道您的局部变量名称是什么,因此请相应地更新它们。