在 Django 中获取用户个人资料 [英] get user profile in django
问题描述
你好,我是 Python 和 Django 新手我需要一个获取当前用户配置文件的视图 我知道我应该使用来自 User 的 get_profile 但我不知道如何使用它.我阅读了 django 文档,但对我没有帮助.这是我从文档中发现的:
hello i'm new in python and django I need a view that get current user profile I know I shoud use get_profile from User but I don't know how to use it . i read the django document and It didn't help me. this is what I found from doc:
from django.contrib.auth.models import User
profile=request.user.get_profile()
推荐答案
Django 的文档说明了一切,特别是 存储关于用户的附加信息.首先,您需要在 models.py
中的某处定义一个模型,其中包含用户附加信息的字段:
Django's documentation says it all, specifically the part Storing additional information about users. First you need to define a model somewhere in your models.py
with fields for the additional information of the user:
models.py
from django.contrib.auth.models import User
class UserProfile(models.Model):
# This field is required.
user = models.OneToOneField(User)
# Other fields here
accepted_eula = models.BooleanField()
favorite_animal = models.CharField(max_length=20, default="Dragons.")
然后,您需要通过在 settings.py
中设置 AUTH_PROFILE_MODULE
来表明此模型 (UserProfile
) 是用户配置文件:
Then, you need to indicate that this model (UserProfile
) is the user profile by setting AUTH_PROFILE_MODULE
inside your settings.py
:
settings.py
...
AUTH_PROFILE_MODULE = 'accounts.UserProfile'
...
您需要将 accounts
替换为您的应用程序名称.最后,您希望在每次通过注册 post_save
处理程序创建 User
实例时创建一个配置文件,这样每次创建用户时,Django 也会创建他的配置文件:
You need to replace accounts
with the name of your app. Finally, you want to create a profile every time a User
instance is created by registering a post_save
handler, this way every time you create a user Django will create his profile too:
models.py
from django.contrib.auth.models import User
class UserProfile(models.Model):
# This field is required.
user = models.OneToOneField(User)
# Other fields here
accepted_eula = models.BooleanField()
favorite_animal = models.CharField(max_length=20, default="Dragons.")
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
访问个人资料
要在您的视图中访问当前用户的个人资料,只需使用请求提供的 User
实例,并调用 get_profile 就可以了:
Accessing the Profile
To access the current user's profile in your view, just use the User
instance provided by the request, and call get_profile on it:
def your_view(request):
profile = request.user.get_profile()
...
# Your code
这篇关于在 Django 中获取用户个人资料的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!