`
san_yun
  • 浏览: 2652043 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

django auth_user.get_profile

 
阅读更多

django 对 auth_user 提供了扩展get_profile(self),在django的auth/modles.py提供了如下方法

  def get_profile(self):
        """
        Returns site-specific profile for this user. Raises
        SiteProfileNotAvailable if this site does not allow profiles.
        """
        if not hasattr(self, '_profile_cache'):
            from django.conf import settings
            if not getattr(settings, 'AUTH_PROFILE_MODULE', False):
                raise SiteProfileNotAvailable('You need to set AUTH_PROFILE_MO'
                                              'DULE in your project settings')
            try:
                app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.')
            except ValueError:
                raise SiteProfileNotAvailable('app_label and model_name should'
                        ' be separated by a dot in the AUTH_PROFILE_MODULE set'
                        'ting')

            try:
                model = models.get_model(app_label, model_name)
                if model is None:
                    raise SiteProfileNotAvailable('Unable to load the profile '
                        'model, check AUTH_PROFILE_MODULE in your project sett'
                        'ings')
                self._profile_cache = model._default_manager.using(self._state.db).get(user__id__exact=self.id)
                self._profile_cache.user = self
            except (ImportError, ImproperlyConfigured):
                raise SiteProfileNotAvailable
        return self._profile_cache
 

这段代码做了3件事情:

1. 从settings找到配置的'AUTH_PROFILE_MODULE

2. 加载model = models.get_model(app_label, model_name)

3. 通过id加载:model._default_manager.using(self._state.db).get(user__id__exact=self.id)

 

这个方法有一个问题,_default_manager只会从db中查询,如果我想通过memcached来查询怎么办呢?

 

 

分享到:
评论

相关推荐

    django_facebook_2

    profile_picture=social.extra_data.get('picture', {}).get('data', {}).get('url'), birthday=social.extra_data.get('birthday'), ) return user def complete_login(self, request, app, token, **kwargs)...

    django 解决扩展自带User表遇到的问题

    from django.contrib.auth import get_user_model User = get_user_model() ``` 将这段代码添加到所有使用到`User`的地方,可以确保代码正确地引用自定义的用户模型。 总的来说,扩展Django的`auth_user`模型涉及...

    Django demo 简单登陆注册实现

    from django.contrib.auth.models import User class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) # 添加自定义字段,例如: bio = models.TextField(max_length=500,...

    Django对数据库进行添加与更新的例子

    user_id = UserProfile.objects.get(username=request.user) user_todo = UserTodo(ToDolist=todo, done=done, user_id=user_id, created_time=datetime.now()) user_todo.save() ``` **更新数据库记录:** 在...

    Django2 By Example中文(6-13)_精排目录

    一种更好的做法是在 `User` 的扩展模型 `Profile` 中添加这个字段,或者完全自定义 `User` 模型。 #### 创建行为流应用 为了展示用户最近的行为列表,我们需要创建一个“行为流”应用。这个应用可以跟踪并展示用户...

    Simple Membership System in Python using Django

    同时,使用`OneToOneField`关联到Django的User模型,确保每个用户只有一个关联的Profile。 ```python from django.db import models from django.contrib.auth.models import User class Profile(models.Model): ...

    对django的User模型和四种扩展/重写方法小结

    Django的User模型是其身份认证系统的核心,它位于`django.contrib.auth.models.User`。User模型包含了处理用户账户所需的基本信息和属性,如下所述: 1. **字段**: - `username`: 用户名,最长150个字符,仅限...

    Python通过Django实现用户注册和邮箱验证功能代码

    user_profile.username = user_name user_profile.email = user_name user_profile.is_active = False user_profile.password = make_password(pass_word) user_profile.save() # 发送验证邮件 send_...

    django 扩展user用户字段inlines方式

    return obj.profile.nickname nickname.short_description = '昵称' # Re-register UserAdmin admin.site.unregister(User) admin.site.register(User, UserAdmin) ``` #### 四、补充知识:`OneToOneField` 工作...

    python 3.5下xadmin的使用及修复源码bug

    from django.contrib.auth import get_user_model User = get_user_model() ``` 3. **修复修改密码的 URL**:同样在 xadmin/plugins/auth.py 文件中,修改 register_view 方法中的 URL,确保指向正确的路径: `...

    Django框架之登录后自定义跳转页面的实现方法

    默认情况下,Django的认证系统在用户成功登录后会将其重定向到`/account/profile`页面。但如果我们希望用户登录后跳转到其他特定页面,可以通过配置设置或编程方式实现。以下是如何实现这一功能的详细步骤和相关知识...

    django API 中接口的互相调用实例

    "userprofile_id_list": userprofile_id_list } requests.post(url=post_url, data=data, headers=headers) ``` 5. **Django Request对象**: Django中的`request`对象包含了关于HTTP请求的所有信息。在视图...

    Django自定义用户认证示例详解

    再次,要使Django使用我们的自定义用户模型,需要在Django项目的设置文件中(settings.py)将AUTH_USER_MODEL设置为指向我们定义的用户模型路径。这样,Django在运行时就会使用我们定义的用户模型替代默认的User模型...

    MyFirstSite.zip

    使用Django的ORM,可以通过Model类的方法进行CRUD操作,如`.create()`, `.delete()`, `.save()`, 和查询方法如`.filter()`, `.get()`等。 3. **用户登录与注册**:Django提供内置的认证系统,包括`django.contrib....

Global site tag (gtag.js) - Google Analytics