你能否解释一下“django.contrib.auth”是如何工作的,以我好吗?

我正在验证模块从汲取灵感和更换“django.contrib.auth”。

什么是他们这一切,为什么这样做?

def get_user(request): from django.contrib.auth.models import AnonymousUser try: user_id = request.session[SESSION_KEY] backend_path = request.session[BACKEND_SESSION_KEY] backend = load_backend(backend_path) user = backend.get_user(user_id) or AnonymousUser() except KeyError: user = AnonymousUser() return user class LazyUser(object): def __get__(self, request, obj_type=None): if not hasattr(request, '_cached_user'): from django.contrib.auth import get_user request._cached_user = get_user(request) return request._cached_user class AuthenticationMiddleware(object): def process_request(self, request): assert hasattr(request, 'session'), "The Django authentication ..." request.__class__.user = LazyUser() return None

  • 难道是试图阻止命中为每个请求的用户实例数据库?
  • 它是否去陈旧,如果用户记录被改变?
  • 他们为什么不只需保存用户实例,或钥匙,在会话中?
  • 为什么分配给request.__class__.user而不是简单地request.user

我想补充的身份验证,登录和注销程序,但不想烦你太多的代码转储。 我想我现在就买下,(即最后一个问题可能是关键),但只有具备强迫自己制定出的问题(有点)理智:-)

--------------解决方案-------------

  1. 号它拉用户至多一次每个请求,但不跨越请求。
  2. 是。
  3. 他们是这样。 这家商店的PK。
  4. 使之成为一类属性request (而不是实例属性),这使得它能够作为一个描述符正常工作。
分类:Django的 时间:2012-01-01 人气:0
本文关键词: Django的
分享到:

相关文章

  • Django的一对多关系 2012-01-01

    即时通讯具有两种模式之一companyusers,另一个是鉴定和一个用户具有多个资格 现在我需要进入的资格,同时创造在管理用户如何做呢? 我试图保持许多许多领域中的用户模式,但徒劳......这都涉及到其他用户的资格是在为我需要创建新用户新的资质领域填充. 代码如下.. class Qualification(models.Model): qualification = models.CharField(max_length=250) max_marks = models.IntegerFiel

  • Django的localflavor的车型? 默认的窗口小部件? 2012-01-01

    我看到这些漂亮的"地方风味"的加拿大,但他们只表单域. 我将如何使用它们在我的模型? 我可以创建他们都为CharFields肯定,但有没有办法从模型内部,这样当我创建一个设置默认表单控件ModelForm它会使用它们? --------------解决方案------------- 号由于验证是一种形式的业务(而不是型号事业),你不能定义在模型级别. 你必须定义一个使用特定FormField自定义表单,并使用该表格. 该文档说明以及如何定义自定义字段类型和部件. BTW:这是一个答案,

  • 我如何跳过一段代码在Django unittesting什么时候? 2012-01-01

    在我的Django应用程序,我有一段代码将文件上载到Amazon S3,我想跳过这一节期间,单元测试. 单元测试正好与运行DEBUG=False ,所以我不能测试settings.DEBUG == True跳过这一节. 有任何想法吗? --------------解决方案------------- 你真的不想要"跳过"代码在您的单元测试 - 如果你这样做,你永远不会有覆盖这些地区. 这是迄今为止最好提供模拟接口与外部系统,这样就可以确保代码的其他的行为与预期. 这尤其是在与外部资源,可

  • Django管理:没有看到任何应用程序(权限问题?) 2012-01-01

    我有一个网站使用Django运行一些自定义应用程序. 我没有使用Django的ORM,只是视图和模板,但现在我需要存储一些信息让我创造了一些车型在一个应用程序,并允许管理员. 问题是,当我登录管理员它只是说,"你不必编辑任何许可",连验证应用程序显示在页面中. 我使用的是用的SyncDB作为一个超级用户创建相同的用户. 在同一台服务器我有一个使用管理就好了另一个网站. 使用Django 1.1.0与Apache / 2.2.10的mod_python / 3.3.1的Python /

  • Django的+ WSGI +多个站点 2012-01-01

    我使用的网站架构一个Django应用,需要在一个Apache虚拟主机部署. 我使用MOD-蟒蛇与PythonInterpreter,它是工作的罚款. 但MOD-蟒蛇已被弃用,我希望迁移到WSGI. 不过,我可以想出如何利用WSGI配置此场景. 谁能帮我? 我猜只是用WSGIScriptAlias​​为每个站点无法正常工作,因为它是在同一个Python解释器运行. 任何人可以帮助我吗? --------------解决方案------------- 对于WSGIApplicationGroup默认

  • Facebook登录的Django和URL重定向? 2012-01-01

    我已实施有一个用户登录/注册页面的Django应用程序. 我想提出的实也是用户ID可能​​登录到我的应用程序. 这样做,我跟着这个链接http://developers.facebook.com/docs/guides/web/#login. 随着该链接的帮助,我现在可以登录使用Facebook ID也. 点击Facebook登录按钮,弹出窗口与Facebook的登录页面; 提供用户名ñPASSW,使得它记录在与Facebook. 但登录也该页面后,被重定向回我的主页. 我需要将其重定向到其他一

  • Django的南迁与空= True和空白= TRUE工作 2012-01-01

    我使用的南Django的数据库迁移. 在我的models.py我改变的一个字段从 class User(models.Model): group = models.ForeignKey(Group) 至 class User(models.Model): group = models.ForeignKey(Group, null = True, blank = True) 换句话说,我想使group领域User可选的. 然后,当我试图运行schemamigration,南给了我这个错误 (doo

  • 在Django管理(使用PostgreSQL)UnicodeDecode错误使用Linux中的特殊字符时 2012-01-01

    我一直在使用我的Windows下,同时应用程序的psql / Django的堆栈没有任何问题的. 然而,最近我切换到Linux操作系统中,许多地方开始打破. 作为一个西班牙语的人我的应用程序使用了大量的特殊字符,如"A"或"N". 当然,我决定,我的数据库和default_encoding应该是UTF-8,以避免任何有趣的问题. 然而,即使应用程序显示了谁了特殊字符的对象没有问题,管理员开始有许多问题. 每当一个元素,其显示名称已经特殊字符是牵强,我会得到一个可怕的

  • .select_related后Django的输出模板数据() 2012-01-01

    我有MySQL数据库: 在Django模型: class Record(models.Model): schema_id = models.IntegerField() project_id = models.IntegerField() name = models.CharField(max_length=50) class Value(models.Model): record = models.ForeignKey(Record) key = models.ForeignKey(Key)

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.232 (s). 10 q(s)