私の最初のエンコード関連のバグがあり、困惑しています。問題は、既存のデータベースエントリを更新する形式のDjangoアプリケーションにあります。更新フォームを使用してエントリを変更すると、新しいエントリデータに引用符、かっこ、u(エンコーディングマーク)などのエンコーディング関連の表記が含まれていることがわかりました。 。それは私が私の文字列がでているエンコードものについてはDjangoを混乱させる間違いのいくつかの並べ替えを行ったことが表示されますデータベースエントリを保存するときに、Djangoアプリケーションで文字列にエンコード表記が含まれています
要約すると、これは問題です:
初期状態:エントリのタイトルフィールドがFooBarの
です望ましい状態:エントリのタイトルフィールドがFooBar2
である私が代わりに何を得る:エントリのタイトルフィールドがある(u'FooBar2' 、)
これらの符号化マーカーは、私のDjangoのアプリでプリントアウト得ている、と私は、彼らがいることを確認しました」またそこに私は
>>>entry.title
u"(u'FooBar2',)"
私のフォームとビューはデータベースにこれらの表記を保存している理由を任意のアイデア(以下の例のように)Pythonシェルから直接データベースにアクセス編?どうすればそれを止めることができますか?
これは、私は、データベースのエントリを編集するために使用しているフォームです:
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)
エントリモデルを追加できますか? – DTing
上記に追加しました。 – jchung