2014-11-20 119 views
0

Ahoy Mateys!'str'對象沒有屬性'get'(Django)

了一個simpel形式在這裏一個簡單的模型:

class Hardware(models.Model): 
type_name = models.CharField(max_length=60) 

def __unicode__(self): 
    return self.type_name 



class HardwareForm(ModelForm): 
    class Meta: 
     model = Hardware 
     fields = ['type_name'] 

,這是用我的簡單看法功能:

def createHardware(request): 
if request.method == 'POST': 
    form = HardwareForm('request.POST') 
    if form.is_valid(): 
     new_hardware = form.save() 


     return render_to_response('administration/overview.html') 
else: 
    form = HardwareForm() 

    return render_to_response('administration/create_hardware.html', { 
        'form': form, }, context_instance = RequestContext(request)) 

這是回溯:

Environment: 


Request Method: POST 
Request URL: http://127.0.0.1:8000/ticket/createHardware/ 

Django Version: 1.6.6 
Python Version: 2.7.8 
Installed Applications: 
('django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'ticket') 
Installed Middleware: 
('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\base.py" in get_response 
    112.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "C:\Users\bachi_000\workspace\Help\src\ticket\views.py" in createHardware 
    155.   if form.is_valid(): 
File "C:\Python27\lib\site-packages\django\forms\forms.py" in is_valid 
    129.   return self.is_bound and not bool(self.errors) 
File "C:\Python27\lib\site-packages\django\forms\forms.py" in errors 
    121.    self.full_clean() 
File "C:\Python27\lib\site-packages\django\forms\forms.py" in full_clean 
    273.   self._clean_fields() 
File "C:\Python27\lib\site-packages\django\forms\forms.py" in _clean_fields 
    282.    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 
    207.   return data.get(name, None) 

Exception Type: AttributeError at /ticket/createHardware/ 
Exception Value: 'str' object has no attribute 'get' 

所以我得到了更多的數據在其中的幾個表單,並沒有問題將一個空的表單傳遞給html頁面,填充它ut並將它們發回到該函數以獲取表單中的數據。運行is_valid()並將數據傳遞給模型的新實例(向其添加更多數據)

爲什麼我在這裏得到這個錯誤?

回答

1

您需要將字典傳遞給您的HardwareForm,而不是字符串。

改變你views.py

form = HardwareForm('request.POST') 

到:

form = HardwareForm(request.POST) 
+0

太感謝你了!有時候你看不到森林,因爲那麼多樹......或者你坐在馬上尋找它 – Bachillikum 2014-11-20 23:06:00

相關問題