将附加参数传递给django的登录和模板

bje*_*sus 2 django templates arguments login

我的应用程序使用Django的django.contrib.auth.views.login登录视图,并使用我制作的自定义模板.

我想向我的模板传递一个额外的参数,它将以几种方式更改登录页面.实际上,我正在尝试根据URL显示不同的登录页面.

如何将其他参数传递给登录视图和我的自定义模板?

Rob*_*rio 5

在Django 1.3上,登录视图extra_context以字典的形式接受新参数.

django的/的contrib/AUTH/views.py

def login(request, template_name='registration/login.html',
      redirect_field_name=REDIRECT_FIELD_NAME,
      authentication_form=AuthenticationForm,
      current_app=None, extra_context=None):
Run Code Online (Sandbox Code Playgroud)


Bab*_*k K 5

要添加Roberto Rosario的答案,您可以将参数字典传递到extra_context您的内部urls.py

你的项目/urls.py

from django.conf.urls import url
from django.contrib.auth import views

urlpatterns = [
    url(r'^login/$', views.login, {
        'template_name': 'your-template-dir/login.html',
        'extra_context': {
            'additional_arg1': val1,
            'additional_arg2': val2,
            ...
        },
    }, name="login"),
    ...
]
Run Code Online (Sandbox Code Playgroud)

然后它将在您的模板中可用。

yourProject/your-template-dir/login.html

{% extends "your-template-dir/base.html" %}

<div>
    <p>The value of 'additional_arg1' is {{ additional_arg1 }}.</p>
    <p>The value of 'additional_arg2' is {{ additional_arg2 }}.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

这是Django 的官方文档