我的應用程序使用django.contrib.auth.views.login中的Django登錄視圖和我製作的自定義模板。將其他參數傳遞給django的登錄名和模板
我想通過我的模板一個額外的參數,這將在幾個方面改變登錄頁面。實際上,我試圖根據網址顯示不同的登錄頁面。
如何將其他參數傳遞給我的自定義模板的登錄視圖&?
我的應用程序使用django.contrib.auth.views.login中的Django登錄視圖和我製作的自定義模板。將其他參數傳遞給django的登錄名和模板
我想通過我的模板一個額外的參數,這將在幾個方面改變登錄頁面。實際上,我試圖根據網址顯示不同的登錄頁面。
如何將其他參數傳遞給我的自定義模板的登錄視圖&?
來源顯示只有一個地方會影響模板上下文。
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm): # here
所以你唯一的選擇就是搭上AuthenticationForm
乘車或寫自己的登錄視圖(其中,順便說一句,是很簡單,如果你看一下代碼)。
from django.contrib.auth.forms import AuthenticationForm
AuthenticationForm.my_extra_data = 'foobar'
(r'^accounts/login/$', 'django.contrib.auth.views.login', \
{'template_name': 'myapp/login.html', \
'authentication_form': AuthenticationForm }),
模板
{{ form.my_extra_data }}
在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):
很高興知道,謝謝。我將在下次使用。 – bjesus
我在路過額外的上下文變量從我的自定義登錄視圖功能的模板時的挫折感。儘管有許多人的建議比我聰明得多,但他們都是以空串的形式打印出來的。
原來我的urls.py
條目仍然指向built in login view,而不是我自定義的條目。
請不要讓這發生在你身上。
當你消除不可能時,無論如何,不管可能性如何,都必須是真相。 - Mr. Spock
爲了增加Roberto Rosario的回答,您可以傳遞的參數的字典裏面extra_context
您urls.py
yourProject/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"),
...
]
哪樣然後在您的模板中可用。
yourProject /你的模板-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>
謝謝,我結束了用我自己的代碼包裝整個登錄功能。 – bjesus