Python 2.7 および Ubunutu 12.04 で Django 1.4 を使用しています。
ユーザーのプロファイルを更新するフォームがあります。フォームの最後の項目はパスワードです。フォームに既存のユーザーのデータを事前入力します。パスワード フィールドは事前入力されません。それで問題ありません。
問題は、データを「保存」すると、パスワードが上書きされて null または空のフィールドになることです (どちらかわかりません)。悪い。
これを防ぐにはどうすればよいですか?
必須フィールド ( ) にしようとしましたforms.py
:
password = forms.CharField(widget = forms.PasswordInput(), required = True)
うまくいきませんでした。
None
パスワードを更新する前に、パスワードが正しくないことを確認しようとしました ( views.py
):
if (request.POST.get('password') is not None):
user.set_password(request.POST.get('password'))
うまくいきませんでした。
空のフォーム値は次のように返されNone
ますか? そうでない場合、それは何として返され、空かどうかを確認するにはどうすればよいですか?
views
編集1:検証を確認するために私のものを更新しました-多分私はこれを間違っていましたか?
@login_required
def profile(request):
"""
.. function:: profile()
Provide the profile page, where it can be updated
:param request: Django Request object
"""
if request.user.is_authenticated():
user = User.objects.get(username = request.user.username)
user_dict = createUserProfileDict(user)
form = ProfileForm(initial = user_dict);
data = { 'user' : request.user }
data.update({ 'form' : form })
data.update(csrf(request))
if form.is_valid():
return render_to_response("profile.html", data)
今、私は次のエラーを受け取ります:
The view rsb.views.profile didn't return an HttpResponse object.
それで、私のフォームは有効ではないようですか?その理由を知るにはどうすればよいですか?
は次のupdate_profile view
とおりです。
@login_required
def update_profile(request):
"""
.. function:: profile()
provide the profile page
:param request: Django Request object
"""
if request.user.is_authenticated():
user = User.objects.get(username = request.user)
user.first_name = request.POST.get('first_name')
user.last_name = request.POST.get('last_name')
user.email = request.POST.get('email')
if (request.POST.get('password') is not None):
user.set_password(request.POST.get('password'))
user.save()
# Update the additional user information tied to the user
user_info = UserProfile.objects.get(user_id = user.id)
user_info.company_name = request.POST.get('company_name')
user_info.client_type = request.POST.get('client_type')
user_info.address1 = request.POST.get('address1')
user_info.address2 = request.POST.get('address2')
user_info.city = request.POST.get('city')
user_info.state = request.POST.get('state')
user_info.country = request.POST.get('country')
user_info.zip_code = request.POST.get('zip_code')
user_info.phone_number = request.POST.get('phone_number')
user_info.save()
return profile(request)