【问题标题】:django-allauth configuration doubtsdjango-allauth 配置疑惑
【发布时间】:2013-05-24 21:45:09
【问题描述】:

我在 Django 1.5.1 中使用 django-allauth,在设置时我有几个问题:

1.配置urls.py

文档说您必须将以下内容添加到 urls.py 文件中:

urlpatterns = patterns('',
    ...
    (r'^accounts/', include('allauth.urls')),
    ...
)

问题是我已经有一个名为 accounts 的自定义应用程序,并且我已经使用了以下 URL 模式:

(r'^accounts/', include('accounts.urls')),

所以我在这里与accounts/ 正则表达式 URL 发生命名冲突。我的问题是:我可以将allauth URL 模式重命名为 (r'^auth/', include('allauth.urls')) 而不会出现问题,还是这样做不安全,最好将我自己的 URL 重命名为 (r'^users/', include('users.urls')) 之类的东西(并重命名我的帐户应用程序给用户以保持命名一致性)。

2。自定义 allauth 默认模板

自定义登录等默认模板的正确方法是什么?我认为直接修改库不是最好的方法。我想应该使用一些具体的目录层次结构通过templates 目录来完成。另外,我不知道在覆盖这些模板时是否必须提供某种base.html 文件来扩展,或者可以毫无问题地使用所有页面扩展的站点base.html。你能用这个来说明我吗?

3.管理员登录表单在首次访问时显示登录和注销

当我在一些登录和注销后访问管理面板时,会出现历史记录,但如果我刷新页面,它就会消失。我认为这一定与 django 消息有关:

4.设置SOCIALACCOUNT_PROVIDERS

名为SOCIALACCOUNT_PROVIDERS 的字典设置是可选的还是必须设置?

5.用户使用 3rd 方应用登录时密码是如何计算的?

创建用户时,它有一个密码,但它是如何计算的?并且...它有用还是只是此必填字段的占位符?用户可以用它来本地登录吗?

谢谢!

【问题讨论】:

    标签: python django login django-allauth


    【解决方案1】:

    关于1):

    • 只要完全匹配的 URL 模式没有重叠,就不会发生冲突。例如:如果您的帐户应用程序与“/accounts/login/”匹配,那么确实存在冲突,因为 allauth 也在针对该 URL 进行攻击。但是,如果您的帐户应用程序只是简单地匹配以 /accounts/ 为前缀的其他 URL,那么您就可以了。

    • 如果您坚持,您确实可以将 allauth URL 放在不同的路径下。 allauth 使用基于名称的 URL 反转,因此新的路径前缀将被自动拾取。

    至于2):

    3):allauth 使用 Django 消息框架。看: https://docs.djangoproject.com/en/dev/ref/contrib/messages/#expiration-of-messages -- 如果您不遍历消息以显示它们,它们不会过期。因此,显然您没有在模板中显示消息。因此,它们会堆积起来,直到管理员出现,它会呈现(并清除)到目前为止收集的所有消息...

    4) 可选

    5) 没有设置密码,也就是说,用户只能使用第三方帐户登录,直到他真正设置了密码(/accounts/password/set/)。

    【讨论】:

    • 感谢@pennersr 的快速回复!好的 1) 我在这里不会有问题。关于2)我已经在示例项目中设置了模板,但我有一个疑问:connections.htmlsignup.html 都继承自socialaccount/base.html,但是我在socialaccount 中看不到这个模板,我在帐户中看到了它。我不明白这一点。更重要的是,我用更多的疑问更新了我的问题。你能帮我看看他们吗?感谢您与我们分享这个图书馆! :)
    • 示例项目覆盖了一些模板,而不是全部。 socialaccount/base.html 未被覆盖,因此您不会在那里找到它。顺便说一句,答案已更新以反映新问题...
    • 嗨@pennersr,再次感谢! 3、4 和 5 都可以。关于 2(模板):我已经设置它并且它正在工作,但我不明白为什么 connections.htmlsignup.html 如果它们从“确实不存在”(socialaccount/base.html)。哪个是这些的“默认”?我已经更新了 account/base.html 以扩展我的自定义基础 layout.hml 并使用 allauth 引导模板中定义的块更新了这个。再次感谢! :)
    • 模板确实存在——看看这里:github.com/pennersr/django-allauth/blob/0.11.1/allauth/…
    • 这正是我想要的。感谢您的回答,我给您 25 个代表(接受 + 赞成)以感谢您!
    猜你喜欢
    • 2019-11-02
    • 2022-10-26
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2014-05-21
    • 2017-02-16
    相关资源
    最近更新 更多