2014-05-18 2 views
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 

.

+0

필요에 따라이 양식을 django.contrib.auth.forms.UserCreationForm으로 확장하려고 시도 했습니까? –

+0

당신은 환영합니다, 나는이 문제를 다루는 개발자의 차세대를위한 답으로 그것을 추가했습니다 : D –

답변

0

사전 정의 된 양식 django.contrib.auth.forms.UserCreationForm을 필요에 따라 확장 할 수 있습니다.