2011-05-10 44 views
0

我正面臨着我的第一個與編碼相關的錯誤,我很難過。問題出在Django應用程序中,它有一個更新現有數據庫條目的表單。當更新表單用於更改條目時,我發現新條目數據包含引號,括號和u(編碼標記)等與編碼相關的符號。 。看來,我犯了某種錯誤的其迷惑Django的有關編碼什麼我的琴絃是Django應用程序在保存數據庫條目時在字符串中包含編碼符號

總而言之,這就是問題所在:
初始狀態:條目標題字段是FooBar的
理想狀態:條目標題字段是FooBar2
我能得到什麼,而不是:條目標題字段是(u'FooBar2' ,)
這些編碼標記在我的Django應用程序越來越打印出來,和我確認了他們」還有那裏母雞我直接訪問數據庫從Python殼(如在下面的例子)

>>>entry.title 
u"(u'FooBar2',)" 

任何爲什麼我的表單和視圖在保存這些符號到數據庫的想法?我怎樣才能阻止它?


這是我使用編輯數據庫條目的形式:

class EntryEditForm(forms.Form): 
    title = forms.CharField(label=u'Entry title.', max_length=100) 
    target = forms.CharField(label=u'Entry target', required=False) 
    username = forms.CharField(label=u'Entry-specific username', max_length=100, required=False) 
    password = forms.CharField(label=u'Entry-specific password', max_length=100, required=False) 

這是用於編輯所述數據庫條目的視圖:

def editentry_page(request): 
    if request.method == 'POST': 
     form = EntryEditForm(request.POST) 
     entryid = unquote(request.POST['entryid']) 
     if form.is_valid(): 
      entry = request.user.entry_set.get(id=entryid) 
      entry.title=form.cleaned_data['title'], 
      entry.username=form.cleaned_data['username'], 
      entry.password=form.cleaned_data['password'], 
      entry.targetemail=form.cleaned_data['targetemail'], 
      entry.user=User.objects.get(username=request.user) 
      entry.save() 
      return HttpResponseRedirect('/user/%s/' % request.user.username) 
    elif 'entryid' in request.GET: 
     entryid = unquote(request.GET['entryid']) 
     try: 
      selectedentry = request.user.entry_set.get(id=entryid) 
      title = selectedentry.title 
      targetemail = selectedentry.targetemail 
      username = selectedentry.username 
      password = selectedentry.password 
     except (Entry.DoesNotExist): 
      raise Http404(u'This entry does not exist or is not your entry') 
     entry = Entry.objects.get(id=entryid) 
     form = EntryEditForm({ 
      'title': entry.title, 
      'email': entry.email, 
      'target': entry.target, 
      'username': entry.username, 
      'password': entry.password, 
      }) 

    else: 
     raise Http404(u'No entry selected - return to your entries to try again.') 
    variables = RequestContext(request, {'form': form, ‘entryid': unquote(request.GET['entryid']),}) 
    return render_to_response('entry_edit.html', variables) 

這是入門型號

class Entry(models.Model): 
    title = models.CharField(max_length=200) 
    email = models.EmailField(unique=True) 
    password = models.CharField(max_length=200) 
    username = models.CharField(max_length=200) 
    target = models.CharField(unique=False) 
    user = models.ForeignKey(User) 
+0

你可以添加你的入門模型嗎? – DTing 2011-05-10 23:22:22

+0

是的。上面添加了它。 – jchung 2011-05-11 03:08:20

回答

1
entry.title=form.cleaned_data['title'], 

最後逗號把它放入您的視圖中的元組。別那樣做。

+0

真棒 - 問題解決了。多謝! – jchung 2011-05-11 03:42:29

相關問題