标签: django-users

为什么我不能在 django 中导入用户模型?

I am building a django web app with a custom user model which extends the AbstractBaseUser. In one of my models I need to use this custom user model:

from accounts.models import User

class History(models.Model):
    user = models.ForeignKey(User)
    job = models.ForeignKey(Job)
Run Code Online (Sandbox Code Playgroud)

When I try to run the python manage.py makemigrations command this error message is outputted:

ImportError: cannot import name User
Run Code Online (Sandbox Code Playgroud)

In my settings.py I do the following to let django know that there is a custom user model:

AUTH_USER_MODEL …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-users

3
推荐指数
1
解决办法
3525
查看次数

使用自定义用户,注册时会忽略设置中的密码验证

在 Django 中,我创建了一个自定义用户。

我的问题是默认验证器不起作用,任何密码都被接受。

我期望默认的密码验证器能够工作,因为我继承了默认的模型/表单类。

在 Django 设置中我有:

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        'OPTIONS': {
            'min_length': 12,
        }
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
Run Code Online (Sandbox Code Playgroud)

]

自定义用户实现:

class User(AbstractBaseUser, MetaData, PermissionsMixin):

    account = models.ForeignKey(Account, blank=True, null=True, related_name='owner', on_delete=models.CASCADE)
    email = models.EmailField(max_length=255, unique=True)
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    is_confirmed = models.BooleanField(default=False)  # email confirmed
    is_active = models.BooleanField(default=False)  # can't login
    is_staff = models.BooleanField(default=False)  # staff user non super
    is_superuser = models.BooleanField(default=False)  # superuser …
Run Code Online (Sandbox Code Playgroud)

django django-authentication django-users

3
推荐指数
1
解决办法
2414
查看次数

create_user() 缺少 1 个必需的位置参数:“用户名”

我删除了username字段,因为我希望用户能够使用他们的电子邮件地址登录,所以我在我的models.py

class CustomUser(AbstractUser):
    USER_TYPE = ((1, 'HOD'), (2, 'Staff'), (3, 'Student'))
    username = None
    email = models.EmailField(unique=True)
    user_type = models.CharField(default=1, choices=USER_TYPE, max_length=1)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []


class Student(models.Model):
    admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    gender = models.CharField(max_length=1, choices=GENDER)
    address = models.TextField()
    profile_pic = models.ImageField(upload_to='media')
    session_start_year = models.DateField(null=True)
    session_end_year = models.DateField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)

Run Code Online (Sandbox Code Playgroud)

在我的views.py,我尝试过:

user = CustomUser.objects.create_user(email=email, password=password, user_type=3, first_name=first_name, last_name=last_name)
Run Code Online (Sandbox Code Playgroud)

但我的create_user() 缺少 1 个必需的位置参数:'用户名' 我该如何解决这个问题?

python django django-models django-users django-custom-user

3
推荐指数
1
解决办法
2206
查看次数

django访问自定义管理器中登录的用户

我想在我写过的自定义管理器中访问当前登录的用户.我想这样做,以便我可以过滤结果只显示他们有权访问的对象.

有没有这样做而没有实际传递它?类似于它在您可以执行request.user的视图中的工作方式.

谢谢

django django-managers django-users

2
推荐指数
1
解决办法
1908
查看次数

在Django中,当我调用User.objects.create_user(用户名,电子邮件,密码)时 - 为什么post_save会被调用两次?

在views.py中,我有以下视图,在注册新用户帐户时会调用该视图.它所做的就是从请求中获取用户名,电子邮件和密码,然后尝试使用这些凭据创建用户.在下面的代码中,"A"被打印,但"B"没有,因为它崩溃了:

views.py

def register(request):
    if request.method == 'POST':
        query_dict = request.POST
        username = query_dict['username']
        email = query_dict['user_email']
        password = query_dict['password']
        role = query_dict['role']
        print "A"
        user = User.objects.create_user(username, email, password)
        # the handler is called here and creates the user profile
        print "B"
        user = authenticate(username=username, password=password)
        user_profile = user.get_profile()
        user_profile.role = role
        user_profile.save()
        if user is not None and user.is_active:
            login(request, user)
            return HttpResponseRedirect("/")
Run Code Online (Sandbox Code Playgroud)

myapp/models.py我有处理程序的以下代码.

'models.py`

post_save.connect(create_user_profile, sender=User)

def create_user_profile(sender, instance, created, **kwargs):
    print "created="+str(created)
    if created: …
Run Code Online (Sandbox Code Playgroud)

django django-models django-errors django-users

2
推荐指数
1
解决办法
7227
查看次数

表单中捕获的URL参数

我正在使用Userena,我正在尝试捕获URL参数并将它们添加到我的表单中,但我失去了如何做到这一点.

我想在模板中做的是:

<a href="/accounts/signup/freeplan">Free Plan</a><br/>
<a href="/accounts/signup/proplan">Pro Plan</a><br/>
<a href="/accounts/signup/enterpriseplan">Enterprise Plan</a><br/>
Run Code Online (Sandbox Code Playgroud)

然后在我的urls.py中

url(r'^accounts/signup/(?P<planslug>.*)/$','userena.views.signup',{'signup_form':SignupFormExtra}),
Run Code Online (Sandbox Code Playgroud)

然后,理想情况下,我想在forms.py中使用该planslug在配置文件中设置用户计划.

我迷失了如何将捕获的URL参数放入自定义表单中.我可以使用extra_context,是否必须覆盖Userena注册视图?

django django-users

2
推荐指数
1
解决办法
5844
查看次数

Django:如何在视图请求之外获取登录用户?

我有一个需要登录用户信息的类方法(在视图之外)。如何在不将请求传递给方法的情况下检索登录用户?不幸的是,我找不到一个好的解决方案,而且不存在这样的方法是不合逻辑的,因为 Django 应该将登录用户存储在某个地方。否则,(我相信)这将是无法使用@login_required的装饰从django.contrib.auth.decorators。对?

那么,如果不可能,为什么不呢?如果我唯一想要的是登录用户而不是里面的所有信息,为什么 Django 会这样工作request

提前致谢。

django request userinfo django-users django-login

2
推荐指数
1
解决办法
3093
查看次数

如何在Django中导入用户模型并选择所有对象

我用的时候

from django.conf import settings
Run Code Online (Sandbox Code Playgroud)

在我的DjangoRestFramework视图中,

class UserList(ListCreateAPIView):
    queryset = settings.AUTH_USER_MODEL.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

我收到了错误

AttributeError at /users/

'str' object has no attribute 'objects'

Request Method:     GET
Request URL:    http://localhost:9999/users/
Django Version:     1.5.1
Exception Type:     AttributeError
Exception Value:    

'str' object has no attribute 'objects'
Run Code Online (Sandbox Code Playgroud)

django django-views django-users django-rest-framework

2
推荐指数
1
解决办法
2039
查看次数

拉取用户名 - "ManyRelatedManager"对象不支持索引

我正在一个允许用户玩异步游戏的网站上创建.我正在使用Python 2.7.5运行Django 1.5,并使用Django的本机用户身份验证API.我没有创建自定义用户模型,而是将每个用户链接到自定义UserDetails类.UserDetails类的相关代码如下:

    class UserDetails(models.Model):
        user = models.OneToOneField(User)
        join_date = models.DateTimeField(auto_now_add=True)
        games = models.ManyToManyField(Game, default=None)
Run Code Online (Sandbox Code Playgroud)

每个游戏都使用ManyToMany字段链接到UserDetails.来自game.models的相关代码:

    class Game(models.Model):
        title = models.CharField(max_length=60)
        create_date = models.DateTimeField(auto_now_add=True)
        started = models.BooleanField(default=False)
        players = models.ManyToManyField('user.UserDetails', default=None)
Run Code Online (Sandbox Code Playgroud)

在首页上,我想要一个列出正在进行的所有游戏的表格.在views.py中,我正在使用此命令:

    games_in_signup = Game.objects.filter(started=False)
Run Code Online (Sandbox Code Playgroud)

...并将其传递给模板.最后,在模板中我有这个代码来生成表的行:

    {% for g in games_in_signup %}
    <tr>
        <td>{{ g.title }}</td>
        <td>{{ g.players|first }}</td>
        <td>{{ g.number_of_players }}</td>
        <td>{{ g.players.all|length }}</td>
        <td>{{ g.create_date }}</td>
    </tr>
    {% endfor %}
Run Code Online (Sandbox Code Playgroud)

而不是像我希望的那样给我第一个玩家的用户名,我得到"TypeError at/game /'ManyRelatedManager'对象不支持索引".如果我尝试改变

        <td>{{ g.players|first }}</td>    
Run Code Online (Sandbox Code Playgroud)

...至...

        <td>{{ g.players.all|first }}</td>
Run Code Online (Sandbox Code Playgroud)

...我在/ game /'UserDetails'对象中获得"AttributeError"没有属性'username'" …

python django django-models django-orm django-users

2
推荐指数
1
解决办法
5070
查看次数

ForeignKey到Model字段?

我希望foreign key我的模型中的关系与表中的username字段User(存储user创建的django.contrib.auth.forms.UserCreationForm).

我的模型看起来如何:

class Blog(models.Model):
    username = models.CharField(max_length=200) // this should be a foreign key
    blog_title = models.CharField(max_length=200)
    blog_content = models.TextField()
Run Code Online (Sandbox Code Playgroud)

username字段应该是外键.外键应该在此字段中

python django django-models django-database django-users

2
推荐指数
2
解决办法
4515
查看次数