0

Когда я создаю пользователя через панель администратора django и отмечаю его персонал, он может войти в административную страницу django, как и следовало бы, но когда я создаю пользователя vie UserForm и пометьте как персональный он не может войти в систему. В нем указывается неверный пароль пользователя для персонала и т. Д.admin зарегистрированный пользователь пользователь не может войти в систему django admin, form зарегистрированный штат пользователя не может

Я подозреваю, что ошибка происходит потому, что я использую,

TEMPLATE_CONTEXT_PROCESSORS = ('django.contrib.auth.context_processors.auth','django.core.context_processors.request') 

В настоящее время у меня есть следующий код:

user_form = UserForm(data=request.POST) 
profile_form = UserProfileForm(data=request.POST) 

if user_form.is_valid() and profile_form.is_valid(): 
    user = user_form.save() 
    user.set_password(user.password) 
    user.save() 

В форме:

class UserForm(forms.ModelForm): 
    password = forms.CharField(widget=forms.PasswordInput()) 

    class Meta: 
     model = User 
     fields = ('username', 'email', 'password') 

Теперь скажите мне, как могу ли я передать эту проблему?

+0

'user.is_staff = true' перед сохранением пользователя? – baxeico

+0

Ваши процессоры контекста не имеют к этому никакого отношения. Проблема, скорее всего, либо 'user.set_password (user.password)' вызывается дважды (один раз в 'UserForm.save()' и второй раз в вашем представлении), либо 'UserForm.save()' неправильно задает настройки флаг 'is_staff'. Вы можете легко проверить второй случай, посмотрев на свой пользовательский объект. Для первого вы не разместили свой код «UserForm», так что только вы можете сказать ... –

+0

is_staff = True yep all cases. Я также дважды проверял с панели администратора. – sadaf2605

ответ

0

уф, я должен добавить что-то вроде этого:

AUTHENTICATION_BACKENDS = (
     'django.contrib.auth.backends.ModelBackend', 
    ) 
Смежные вопросы