自定义LoginView django extra_context

时间:2019-03-11 18:13:19

标签: django django-views django-authentication django-login

我做了一个自定义的loginView,但无法到达模板中的extra_context字典。 (验证正常)

我的查看文件:

from django.contrib.auth import login
from .models import EsportUser

class LoginViewCustom(LoginView):
    #esport_user = EsportUser.objects.first()
    #extra_context = {'test42': esport_user}
    template_name = 'users/login_register.html'
    extra_context = {'test42': 'test'}

我的模板文件(login_register.html):

<a href="#">{% trans "Account" %}  {{  test42 }}</a>

我的网址文件:

path('login/', views.LoginViewCustom.as_view(), name='login', ),

谢谢,史蒂芬(Stéphane)

2 个答案:

答案 0 :(得分:2)

分享一个好的答案还为时不晚:

签出this similar question,基本上,您可以在url中调用as_view()方法时将其他提取上下文传递给我们。

因此,在您的url.py文件中,您可以看到以下内容:

path('login/', views.LoginViewCustom.as_view(extra_context={'test42': 'test'}), name='login', )

答案 1 :(得分:0)

烦恼@Stéphane,欢迎使用StackOverflow。

我认为您的问题是EsportUser是您的模型(模型是您用来创建对象的模板)。

一旦创建了EsportUser模型的对象实例(即通过您正在做的事情来创建用户),您就想query数据库来检索属于该模型的对象,< em>然后将那个对象(或某些对象属性)传递给模板。

假设您有一个EsportUser对象实例(即创建了一个用户),则可以尝试:

# here you query the first EsportUser object
esport_user = EsportUser.objects.first()

# here you pass that object into extra_context - not the model itself
extra_context = {'test42': esport_user}