我正在使用django-allauth和Django 1.5.1,我在设置时遇到了一些问题:
1。配置urls.py
文档说您必须将以下内容添加到urls.py
文件中:
urlpatterns = patterns('',
...
(r'^accounts/', include('allauth.urls')),
...
)
问题是我已经有一个名为accounts
的自定义应用,我已经使用了以下网址模式:
(r'^accounts/', include('accounts.urls')),
所以我在这里使用accounts/
正则表达式网址进行了命名冲突。我的问题是:我可以将allauth
网址格式重命名为(r'^auth/', include('allauth.urls'))
而不会出现问题,或者这样做是不安全的,最好将我自己的网址重命名为{{1} (并将我的帐户应用重命名给用户以获得命名一致性)。
2。自定义allauth默认模板
自定义登录等默认模板的正确方法是什么?我认为直接修改库不是最好的方法。我想它应该通过(r'^users/', include('users.urls'))
目录使用一些具体的目录层次结构来完成。另外,我不知道是否必须提供某种templates
文件以便在覆盖这些模板时延伸,或者可以毫无问题地使用所有页面扩展的网站base.html
。你能用这个来说明我吗?
第3。管理员登录表单在首次访问时显示登录和注销
当我在某些登录和注销后访问管理面板时,会显示历史记录,但如果我刷新页面则会消失。我认为这必须与django消息相关:
4。设置base.html
名为SOCIALACCOUNT_PROVIDERS
的字典设置是可选的还是必须设置?
5。当用户使用第三方应用登录时,如何计算密码?
创建用户时,它有密码,但是如何计算?并且...它是否有用或者它只是这个必填字段的占位符?用户可以使用它进行本地登录吗?
谢谢!
答案 0 :(得分:14)
关于1):
只要完全匹配的网址格式没有重叠,就不会发生冲突。例如:如果您的帐户应用与“/ accounts / login /”匹配,那么确实存在冲突,因为allauth也在为该URL进行攻击。但是,如果您的帐户应用只是将其他网址与/ accounts /作为前缀匹配,那么您就可以了。
如果您坚持,您确实可以将allauth网址放在不同的路径下。 allauth使用基于名称的URL反转,因此将自动选取新的路径前缀。
至于2):
allauth模板没有什么特别之处。您可以像对待任何其他Django应用程序一样覆盖它们。
查看示例应用。它具有Bootstrap和统一模板覆盖。可以通过取消注释以下行来启用它们:https://github.com/pennersr/django-allauth/blob/901485557d4ddee30fed920f2159cdf499c39e1c/example/example/settings.py#L126
所有allauth模板都从名为base.html
的基本模板继承。我希望你的项目也有一个基本模板。使用您的base.html
覆盖,或使用从base.html
yourbase.html
3):allauth使用Django消息框架。看到: https://docs.djangoproject.com/en/dev/ref/contrib/messages/#expiration-of-messages - 如果您不迭代消息以显示消息,则它们不会过期。显然,您没有在模板中显示消息。因此,它们会一直堆积,直到管理员出现,这会呈现(并清除)到目前为止收集的所有邮件...
4)可选
5)没有密码设置,这意味着,用户只能使用第三方帐户登录,直到他实际设置密码(/ accounts / password / set /)。