我将django与allauth一起使用,如果用户未通过身份验证,则需要不同的布局。在我的login.html中,我不能使用“ extends base.html”。在不失去allauth的所有功能的情况下有可能吗?
答案 0 :(得分:0)
您可以使用类似的东西:
{% if user.is_authenticated %}
{% include "subtemplate1.html" %}
{% else %}
{% include "subtemplate2.html" %}
{% endif %}
答案 1 :(得分:0)
是否使用Allauth,过程相同。 在您的视图中,您可以检查用户是否已通过身份验证
def my_view(request):
if request.user.is_authenticated:
return render(request, 'myapp/index.html' {})
else:
return render(request, 'myapp/logged_in.html',{})
但是,最好有不同的类:
from django.contrib.auth.decorators import login_required
def my_view(request):
if not request.user.is_authenticated:
return render(request, 'myapp/index.html' {})
else:
return my_view_auth(request)
@login_required
def my_view_auth(request):
return render(request, 'myapp/logged_in.html',{})
答案 2 :(得分:0)
感谢所有答案。我找到了一个要分享的解决方案here,并提出了一些意见:
# urls.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include
from django.views.generic.base import RedirectView
from allauth.account.views import LoginView
class Lvx(LoginView):
# Login View eXtended
# beware ordering and collisions on paths
template_name = "accounts/login.html"
login = Lvx.as_view()
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^accounts/login/$', login),
url(r'^accounts/', include('allauth.urls')),
url(r'^core/', include('core.urls')),
url(r'^$', RedirectView.as_view(url='/core'), name='core'),]
在我的templates \ accounts文件夹中,我现在拥有一个完整的login.html页面,该页面具有自己的设计,并且与base.html完全分开