我有全认证设置和工作,但是我无法让 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 %}
答案 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')