我在django项目中使用django-allauth进行用户身份验证。
我的问题是:如何更改django-allauth的默认网址,以便所有网址指向我的网站索引/主页?
我能够在索引上显示登录和注册表单,它们似乎工作正常。我想要的是,索引页面上的所有内容,而不是/ accounts / something。
因此,例如,当输入无效的登录详细信息时,它当前会重定向到/ accounts / login,我希望它重定向到主页并在其中显示任何错误消息。电子邮件确认,注册等同样如此。
在urls.py中使用RedirectView.as_view代替allauth似乎没有传递请求中的数据。
这是我的项目' urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'instapayback.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('main_site.urls')),
url(r'^accounts/', include('allauth.urls')),
# url(r'', include('social_auth.urls')),
)
我仍然是django的新手,所以请所有人尽可能地描述。谢谢
答案 0 :(得分:3)
这就是我做到的。尚未完全测试,但似乎可以完成这项工作。
url(r'^accounts/', include('allauth.urls'))
(因为你将覆盖它)。
转到\site-packages\allauth\account\urls.py
并复制您需要的网址。如果您使用社交媒体注册(Facebook等),您可能还想复制来自\site-packages\allauth\socialaccount\urls.py
的网址
将模式粘贴到主urls.py.你的urls.py应该是这样的:
from allauth.account import views as allauth_views
urlpatterns = [
....
url(r"^signup/$", allauth_views.signup, name="account_signup"),
url(r"^login/$", allauth_views.login, name="account_login"),
url(r"^logout/$", allauth_views.logout, name="account_logout"),
url(r"^password/change/$", allauth_views.password_change,
name="account_change_password"),
url(r"^password/set/$", allauth_views.password_set, name="account_set_password"),
url(r"^inactive/$", allauth_views.account_inactive, name="account_inactive"),
# E-mail
url(r"^email/$", allauth_views.email, name="account_email"),
url(r"^confirm-email/$", allauth_views.email_verification_sent,
name="account_email_verification_sent"),
url(r"^confirm-email/(?P<key>[-:\w]+)/$", allauth_views.confirm_email,
name="account_confirm_email"),
# password reset
url(r"^password/reset/$", allauth_views.password_reset,
name="account_reset_password"),
url(r"^password/reset/done/$", allauth_views.password_reset_done,
name="account_reset_password_done"),
url(r"^password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$",
allauth_views.password_reset_from_key,
name="account_reset_password_from_key"),
url(r"^password/reset/key/done/$", allauth_views.password_reset_from_key_done,
name="account_reset_password_from_key_done"),
....
]
例如:对于&#39; login&#39;链接使用
<a href="{% url 'account_login' %}">Login</a>
我发现this文章也很有用(如何从外部Django应用覆盖视图)。
答案 1 :(得分:0)
在您的项目settings.py文件中,您可以通过将以下标志设置为您在webapp中想要的路径来覆盖该操作。
LOGIN_REDIRECT_URL 默认值:'/ accounts / profile /' 当contrib.auth.login视图没有下一个参数时,登录后重定向请求的URL。例如,login_required()装饰器使用此URL。
LOGIN_URL 默认值:'/ accounts / login /' 请求被重定向以进行登录的URL,尤其是在使用login_required()装饰器时。
您可以在Django docs中阅读有关它们的更多信息!