Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 管理员注册员工用户可以';t登录django管理员,表单注册人员用户可以';T_Python_Django_Django Forms_Django Admin_Django Authentication - Fatal编程技术网

Python 管理员注册员工用户可以';t登录django管理员,表单注册人员用户可以';T

Python 管理员注册员工用户可以';t登录django管理员,表单注册人员用户可以';T,python,django,django-forms,django-admin,django-authentication,Python,Django,Django Forms,Django Admin,Django Authentication,当我通过django管理面板创建一个用户,并将其标记为staff时,它可以按其应该的方式登录django管理页面,但当我创建用户vieUserForm并将其标记为staff时,它无法登录。它表示员工的用户名密码无效等等 我怀疑错误是因为我正在使用 TEMPLATE_CONTEXT_PROCESSORS = ('django.contrib.auth.context_processors.auth','django.core.context_processors.request') 目前我有以下

当我通过django管理面板创建一个用户,并将其标记为staff时,它可以按其应该的方式登录django管理页面,但当我创建用户vie
UserForm
并将其标记为staff时,它无法登录。它表示员工的用户名密码无效等等

我怀疑错误是因为我正在使用

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')

现在告诉我,我怎样才能绕过这个问题?

phew,我必须添加如下内容:

AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
    )
三个简单步骤:

  • 创建用户:
  • user=user.objects.create\u user(“用户名”)

  • 为您的用户设置密码:

    user.password=“您的密码”

    user.set\u密码(user.password)

  • 将用户设置为超级用户:

  • user.is\u staff=True

    user.is\u superuser=True'

  • 保存您的用户:

    user.save()

  • 现在您可以登录到django的管理面板

    编辑: 您可以只执行以下操作,而不是上述所有操作:

    python manage.py createsuperuser
    

    并在保存用户之前创建超级用户

    user.is_staff=True
    ?您的上下文处理器与此无关。问题很可能是
    user.set\u password(user.password)
    被调用两次(一次在
    UserForm.save()
    中,第二次在视图中),或者
    UserForm.save()
    未正确设置
    is\u staff
    标志。通过查看用户对象,可以轻松检查第二种情况。对于第一个例子,你没有发布你的
    UserForm
    代码,所以只有你才能知道…is_staff=True是的所有情况。我也从管理面板中仔细检查了。尝试删除行
    user。设置密码(user.password)
    ,这有帮助吗?还要确保
    user.is_staff=True
    。已删除设置密码,但它不起作用:(