django - Django All-Auth 未重定向到 LOGIN_URL
问题描述
我进行了全身份验证设置和工作,但是通过覆盖全身份验证登录模板,我无法使 LOGIN_URL 正常工作并重定向到“/accounts/login/”作为默认视图。
设置.py
LOGIN_URL = '/accounts/login/'
如果我去 localhost/accounts/login,我可以得到很好的页面,但是当访问 localhost 时,我无法让它成为默认位置。
我可能误解了文档以及它应该如何工作。
希望在http://127.0.0.1:8000/accounts/login/?next=/
访问 localhost 时将其作为主页。
网址.py
urlpatterns = [
#allauth urls
path('accounts/', include('allauth.urls')),
path('', views.login, name='login'),
]
视图.py
def login(request):
return render(request, 'account/login.html')
login.html(所有身份验证模板覆盖)
{% extends "index.html" %}
{% load crispy_forms_tags %}
{% load socialaccount %}
{% block head_title %}Login{% endblock head_title %}
{% block content %}
<div class="text-center">
<h1 class="h4 text-gray-900 mb-4">Welcome Back!</h1>
</div>
<form id="login_form" class="small" method="POST" action="{% url 'account_login' %}">
{% csrf_token %}
{{ form|crispy }}
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
<button class="btn btn-primary btn-user btn-block" type="submit">Login</button>
</form>
<hr>
<a href="{% provider_login_url 'google' %}" class="btn btn-google btn-user btn-block" role="button">
<i class="fab fa-google fa-fw"></i> Login with Google
</a>
<a href="{% provider_login_url 'facebook' %}" class="btn btn-facebook btn-user btn-block" role="button">
<i class="fab fa-facebook-f fa-fw"></i> Login with Facebook
</a>
<hr>
<div class="text-center">
<a class="small" href="#">Forgot Password?</a>
</div>
<div class="text-center">
<a class="small" href="#">Create an Account!</a>
</div>
{% endblock content %}
解决方案
刚刚发现错误。我试图创建一个用于访问登录页面的 url 和视图,而您需要做的就是为主应用程序页面创建一个视图和 url,例如 base.html,然后在其上放置一个 @login_required 装饰器。当您尝试导航到应用程序但未登录时,它会重定向到 all-auth 的登录模板。
最终配置如下:
设置.py
LOGIN_URL = '/accounts/login/'
视图.py
@login_required
def base(request):
return render(request, 'base.html')
网址.py
urlpatterns = [
path('', views.base, name='base'),
]
推荐阅读
- linux - makeself 将启动脚本作为源脚本运行
- java - 为什么 JMM 产生 (0, 0) 即使它被认为是禁止的结果
- graphql - graphql 查询到 graphiql 中的 json 查询
- c - 如何在 C 中获取打开的 fd 的标志?
- sorting - 按不同的日期格式排序(mmddyyyy)-xslt
- python - 中文文本的 TF-IDF 算法
- python - Pandas 读取 CSV 日期时间列绘图
- php - 在 woo 中获取对象的 get_the_terms 时出现 PHP 错误
- node.js - 从 NodeJs 到 React 客户端的通知不起作用(服务器发送事件)
- mysql - 如何将多个查询作为输入传递给过程