django allauth如果未通过身份验证,则使用不同的布局

时间:2018-11-13 11:26:46

标签: django django-allauth

我将django与allauth一起使用,如果用户未通过身份验证,则需要不同的布局。在我的login.html中,我不能使用“ extends base.html”。在不失去allauth的所有功能的情况下有可能吗?

3 个答案:

答案 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完全分开