2013-02-03 154 views
2

我收到一個錯誤,我越來越瘋狂!錯誤:'unicode'對象沒有屬性'get'

我創建了一個與模型相關的表單。每次,當我views.py執行form.is_valid()函數,Django會顯示以下錯誤:

Exception Type: AttributeError

Exception Value: 'unicode' object has no attribute 'get'

models.py

from django.db import models 

class Register(models.Model): 
    email = models.CharField(max_lenght=100) 

形式。 py

from django.form import ModelForm 
from models.models import Register 

class RegisterForm(ModelForm): 
    class Meta: 
     model = Register 

views.py

from django.shortcuts import render_to_response 
from models.models import Register 
from register.forms import RegisterForm 

def register(request): 
    if 'user_email' in request.POST: 
     form = RegisterForm(request.POST['user_email']) 
     if form.is_valid(): 
      form.save() 
      retunr render_to_response('registered.html') 

    return render_To_response('main.html') 

PS_1:我在另一個頁面中顯示錶單的值,以檢查它是否包含電子郵件,它是否正常,它只包含電子郵件。

PS_2:request.POST確實包含'user_email'。

請你能幫我解決嗎?

在此先感謝。

回答

0

這條線:

form = RegisterForm(request.POST['user_email']) 

不正確。 Form應該通過完整的映射。然後

form = RegisterForm(request.POST) 

字段名稱會有所不同,但是這是一個單獨的問題(因爲你似乎並不被輸出在一個頁面的形式)。

+0

問題是,如果我刪除['user_email'],那麼,當django檢查'form.is_valid()'時,它總是返回false – Raulsc

+1

我得到了我的問題的答案!問題在於我將電子郵件ID標識爲「user_email」而不是「email」。當表單被驗證時,表單字段的名稱應該與來自request.POST中html模板的字段完全相同。 感謝大家的幫助! – Raulsc

相關問題