2013-08-28 69 views
1

在Django應用程序中,我正在獲取用戶提交的表單數據,它試圖插入到mysql數據庫中,但即使request.keys與db列名值匹配也沒有插入db在db數據沒有從django插入

if request: 
    user=User() 
    for k,v in request.POST.items(): 
     if str(k)!="csrfmiddlewaretoken": 
      if(k=='name'): 
       user.name=v  #like this data will be saved 

      user.save() 



if request: 
    user=User() 
    for k,v in request.POST.items(): 
     if str(k)!="csrfmiddlewaretoken": 
       user.k=v  #like this data will not be saved 

      user.save() 

其實我使用了相同的db列名和html表單標籤名,所以request.POST.keys()與db列名匹配,但是如果我硬編碼列它正在工作,但直接如果我從request.post.keys並保存其不能正常工作

+0

我想你根本沒有調用過用戶對象。 試試這個:user = User.objects.all()而不是user = User() –

+0

@ Romans8.38-39 User.objects.all()返回存儲在用戶模型中的任何數據/對象..其實我的問題是偶數post.keys與db col的名稱匹配,但不保存 – user2210579

+0

您的代碼非常不安全。不要這樣做。使用Django的模型形式來驗證用戶數據。 –

回答

0

這是行不通的,因爲user.k意味着你試圖賦值v t ◦User實例的屬性k,該屬性不存在。

如果你想這樣做,你可以使用setattr()來達到這個目的。

for k,v in request.POST.items(): 
    if str(k)!="csrfmiddlewaretoken": 
     setattr(user, k, v) 
    user.save() 
+0

雅感謝它的工作,但仍然沒有得到什麼區別,如果你在django教程part1中看到他們分配polls.id = 1相同的方式,我設置用戶屬性...默認情況下,用戶對象將所有的列作爲屬性 – user2210579

+0

你的情況中'k'是一個變量,這就是它不工作的原因。在你的情況下,假設'k'是一個列(模型屬性) - 就像教程示例中的'id'一樣。例如,如果'k'是'first_name',你假設'user.k'評估爲'user.first_name',但它不。 – karthikr

+0

如果k ='firstname'那麼user.k ='dar'不會設置,但是user.firstname ='dar'將會設置,所以user.k!= user.firstname,那麼user.k的確切值是 – user2210579