0
django User 객체를 사용하여 사용자 데이터를 데이터베이스에 저장하는 등록 및 로그인 기능을 만들었습니다. 그러나 사용자를 등록 할 때 사용자에게 연결된 암호가 제대로 해시되지 않습니다. 이것은 장고 관리 인터페이스에서 "잘못된 암호 형식 또는 알 수없는 해시 알고리즘."오류가 있음을 의미합니다. 나는 set_password를 사용하도록했다.Django admin interface : 암호 형식 또는 알 수없는 해싱 알고리즘이 올바르지 않습니다.
사전에
from django import forms
from django.contrib.auth.models import User
from authentication.models import User_Information
class User_Form(forms.ModelForm):
# Using the PasswordInput widget to hide the entered content of the password field
password = forms.CharField(widget=forms.PasswordInput())
# Define the nested class. The default fields can be edited here, if you wish to exclude something.
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password')
views.py
def register(request):
context = RequestContext(request)
# Checks if registration was successful. Changes to true if this is the case
# Processing form data.
if request.method == 'POST':
user_form = User_Form(data=request.POST)
# If the form is valid.
if user_form.is_valid():
# Saves the user's data to the database.
user = user_form.save()
# Hash the password and updates the user object.
user.set_password(user.password)
user.save
# Tell the template that registration was successful
messages.success(request, 'You registered successfully')
else:
print user_form.errors
else:
user_form = User_Form()
return render_to_response(
'authentication/register.html',
{'user_form': user_form},
context)
감사 forms.py models.py
from django.db import models
from django.contrib.auth.models import User
class User_Information(models.Model):
# Links UserProfile to a User model instance
user = models.OneToOneField(User)
# Override the __unicode__() method to return username
def __unicode__(self):
return self.username
.
필요에 따라이 양식을 django.contrib.auth.forms.UserCreationForm으로 확장하려고 시도 했습니까? –
당신은 환영합니다, 나는이 문제를 다루는 개발자의 차세대를위한 답으로 그것을 추가했습니다 : D –