【问题标题】:Django custom auth backend not recognized on ApacheApache 无法识别 Django 自定义身份验证后端
【发布时间】:2010-01-13 11:59:15
【问题描述】:

我正在尝试使用 mod_python 将我的 Django 应用程序部署到基于 Apache2 的服务器。我已经正确设置了处理程序并进行了配置以使 mod_python 与我的项目一起工作。我的项目实现了一个自定义身份验证后端以将我的用户连接到 twitter,并且我的后端实现已开启:

myproject
|- backends/

目录。一切似乎都运行良好,我的页面加载完毕,我可以正常进行读/写操作。但是每当我尝试使用我的 Twitter 帐户登录时,应用程序都会触发一个异常告诉我:

导入身份验证后端 backends.twitteroauth 时出错:“没有名为 backends.twitteroauth 的模块”

在我的 settings.py 中,我将我的后端注册为

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.ModelBackend',
   'myproject.backends.twitteroauth.TwitterBackend',
)

有什么问题?

【问题讨论】:

  • 这也是 gunicorn 的问题。

标签: python django mod-python


【解决方案1】:

删除数据库解决了我的问题。据我所知,如果用户登录,他相应的登录后端将作为会话变量保存在数据库中。我的 settings.py 文件是

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.ModelBackend',
   'backends.twitteroauth.TwitterBackend',
)

在我进行更正之前。更改 settings.py 并重新启动应用程序是不够的。您也必须从数据库中删除与会话相关的记录。

【讨论】:

    【解决方案2】:

    问题是python找不到模块twitteroauthTwitterBackend 所在文件的名称是什么?还要确保backends 中有一个__init__.py 文件,以将其标记为一个包。

    编辑:

    如果你运行 shell 会发生什么

    python manage.py shell
    

    并尝试将其导入那里?

    from myproject.backends.twitteroauth import TwitterBackend
    

    因为其他任何东西都可以正常工作,我猜myproject 在你的 python 路径中。

    【讨论】:

    • TwitterBackend 是一个类,文件是 twitteroauth。我在目录中有 init.py。
    【解决方案3】:

    确保后端位于 python 路径上,并且文件夹中有 init.py 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-06
      • 2018-02-24
      • 2015-09-08
      • 2022-01-11
      • 2015-07-31
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多