Django All-Auth 没有重定向到 LOGIN_URL

时间:2020-12-29 05:29:08

标签: django django-allauth

我有全认证设置和工作,但是我无法让 LOGIN_URL 工作并通过覆盖全认证登录模板重定向到“/accounts/login/”作为默认视图。

settings.py

LOGIN_URL = '/accounts/login/'

如果我转到 localhost/accounts/login,我可以得到很好的页面,但是我无法在访问 localhost 时将其设置为默认位置。

我可能误解了文档及其应该如何工作。

希望在访问 localhost 时将其作为主页 http://127.0.0.1:8000/accounts/login/?next=/

urls.py

urlpatterns = [
    #allauth urls
    path('accounts/', include('allauth.urls')),

    path('', views.login, name='login'),
]

views.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 %}

1 个答案:

答案 0 :(得分:0)

刚刚发现错误。我试图创建一个用于访问登录页面的 url 和视图,当您需要做的就是为主应用程序页面创建一个视图和 url,例如 base.html,然后在其上放置一个 @login_required 装饰器。当您尝试导航到该应用但未登录时,它会重定向到 all-auth 的登录模板。

最终配置如下:

settings.py

(define (time-stamp)
  (let* ((curr (time))
         (y (+ 1900 (car curr)))
         (m (+ 1 (cadr curr)))
         (tstamp-nums (apply list y m (cddr curr))))
    (apply string-append
           (map (lambda (x) (left-pad (number->string x) 2 "0"))
                tstamp-nums))))

views.py

LOGIN_URL = '/accounts/login/'

urls.py

@login_required
def base(request):
    return render(request, 'base.html')