我的Django程序有問題。我在Django初學者,我一直在尋找與相同的錯誤比我,但沒有成功,不同崗位的答案...似乎Django:'unicode'對象沒有屬性'get'
Here's my traceback :
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/pod
Django Version: 1.11.2
Python Version: 2.7.13
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'labinit',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\admin\Desktop\django_learneo3\Learneo\labinit\views.py" in groupe_pod
121. if form.is_valid():
File "C:\Python27\lib\site-packages\django\forms\forms.py" in is_valid
183. return self.is_bound and not self.errors
File "C:\Python27\lib\site-packages\django\forms\forms.py" in errors
175. self.full_clean()
File "C:\Python27\lib\site-packages\django\forms\forms.py" in full_clean
384. self._clean_fields()
File "C:\Python27\lib\site-packages\django\forms\forms.py" in _clean_fields
396. value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
File "C:\Python27\lib\site-packages\django\forms\widgets.py" in
value_from_datadict
639. getter = data.get
Exception Type: AttributeError at /pod
Exception Value: 'unicode' object has no attribute 'get'
這個問題,因爲我已經改變了我初始化 fonction,爲我在我看來,使用以下形式:
形式:
class Groupe_Form(forms.ModelForm) :
def __init__(self, nom_groupe, *args, **kwargs):
super(Groupe_Form,self).__init__(*args, **kwargs)
self.fields['pod'].widget = forms.Select()
pod1 = Groupe.objects.filter(nom_groupe = nom_groupe).values_list('pod', flat = True)
pods = list(pod1)
self.fields['pod'].queryset = Pod.objects.filter(id__in=pods)
class Meta:
model = Groupe
fields = ['pod']
瀏覽:
def groupe_pod(request):
global new_groupe
grp = new_groupe
form = forms.Groupe_Form(request.POST, grp)
if request.method == 'POST':
if form.is_valid():
print "form was valid"
data_groupe_pod = request.POST.get('grp_pod')
print "data_groupe :", data_groupe_pod
global new_cours
print new_cours
if new_cours == "ICND1":
return redirect('http://127.0.0.1:8000/icnd_1')
elif new_cours == "ICND2":
return redirect('http://127.0.0.1:8000/icnd_2')
else :
form = forms.Groupe_Form(new_groupe)
return render(request, 'pod.html', locals())
我試過很多東西,我真的不知道我的Django代碼中的問題在哪裏。
你爲什麼要在表單中傳遞grp?你可以解釋嗎? – Exprator
您應該避免在Python代碼中使用'global'。你想用它做什麼? – Alasdair
@Exprator:我需要grp才能擁有「動態」表單。在Model Groupe中,我有一個名爲「pod」的ManyToManyField與其他模型的關係。對於一個Groupe對象,我選擇了「豆莢」。我需要在我的表單中顯示我選擇的「豆莢」,而不是所有的「豆莢」 – Bhunyvelz