python - 如何使用 MongoDB 在 Django 中的 request.user 中设置 User

标签 python django python-3.x

如何在 request.userrequest.session.user 中设置自己的用户 我自己的模型:

class User(Document):
    id = fields.IntField(primary_key=True)
    username = fields.StringField(required=True)
    email = fields.EmailField()
    ....
    @property
    def is_authenticated(self):
        return False

我在我的 View 中设置了这个

user = User.objects.get(email=email)
request.session.user = user

但没有成功。

最佳答案

您无法按照您尝试的方式在 session 对象上设置属性。

但是您可以在 session 对象中设置一个key(因为它就像一本字典),如下所示:

# you can't set a user object directly
# because it's not JSON serializable
# but you can set its `id`
request.session['user_id'] = user.id

稍后,您可以像这样获取用户:

user_id = request.session.get('user_id', None)
if user_id:
    user = User.objects.get(id=user_id)
...

要注销用户,您所要做的就是从 session 中删除 key 并调用flush():

def logout(...):
    try:
        del request.session['user_id']
        request.session.flush()
    except KeyError:
        pass
   ...

关于python - 如何使用 MongoDB 在 Django 中的 request.user 中设置 User,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026559/

相关文章:

python - 使用 epydoc 记录公共(public)全局函数

django - Django关系

Django MultipleObjectsReturned

python - 控制洗牌距离

Python Pandas 错误标记数据 : How to avoid error caused by different length

python - 注册 : Copy blob based on the area of the blob size

python - Pandas 数据框 : selecting max by column for subset

python - Django 1.7 迁移 - 日期时间类型错误

python-3.x - 双击不在html中的视觉元素使textarea显示selenium

css - PyQt5 TextEdit Widget 更改输入文本的字体颜色