2013-07-29 45 views
2

我一直在研究鎖定整個頁面的方法。一位同事提請我注意django-lockdown。我已經安裝和我的代碼如下所示:Django鎖定身份驗證 - 登錄表單無法正常工作

INSTALLED_APPS += ('lockdown',) 
MIDDLEWARE_CLASSES += ('lockdown.middleware.LockdownMiddleware',) 
LOCKDOWN_PASSWORD = 'letmein' 

我使用自帶位桶所提供的模板代碼看起來像這樣:

{% extends "lockdown/base.html" %} 

{% block title %}Coming soon...{% endblock %} 

{% block content %} 
<div id="lockdown"> 
    <h2>Coming soon...</h2> 

    <p>This is not yet available to the public.</p> 

    {% if form %} 

    <form action="" method="post"> 
    {{ form.as_p }} 
    <p><input type="submit" value="Preview"></p> 
    </form> 

    {% endif %} 

</div> 
{% endblock %} 

當我在本地運行的服務器我沒有得到任何錯誤,但是表單本身沒有出現在屏幕上。沒有地方輸入密碼,導致我相信{%if form%}可能不是真的。

在網上沒有很多文檔可用,所以我正在努力解決這個錯誤。

+0

你能告訴你的視圖代碼? –

+0

@HieuNguyen http://pastebin.com/yTxTUnNY – Nanor

+0

我認爲把密碼放在一個元組中可以解決你的問題,對嗎?我看到[類似的問題](http://stackoverflow.com/questions/18711085/django-lockdown-password-prompt-not-displayed),除了我有一個元組的密碼。 – user2233706

回答

2

您的鎖定密碼應爲a tuple。像LOCKDOWN_PASSWORDS =('letmein','beta')。

此外,你不應該寫一個模板來讓它工作。 Django鎖定包括電池。剛剛開箱(這也只有這個):

  • PIP安裝Django的鎖定,
  • 加 '鎖定',(尾隨逗號)APPS,
  • 加「lockdown.middleware.LockdownMiddleware 」,(尾隨逗號)到中間件,
  • 添加LOCKDOWN_PASSWORDS =( 'letmein', '測試')

[所有這些事情在設置]

+0

我有LOCKDOWN_PASSWORD =('密碼'),我在其他地方找到了。這不起作用,因爲我沒有使用元組,並且變量名稱是錯誤的。 – tandy

0

文檔引用:

要啓用帶密碼的鎖定站點或視圖的管理員預覽,請將LOCKDOWN_PASSWORDS設置設置爲一個或多個純文本密碼的元組。

所以,你應該有這樣的設置:

LOCKDOWN_PASSWORDS = ('let me in',) 
+0

這只是複製我的答案。 – Private

+0

對不起,我在同一時間輸入答案,這在SO中經常發生 –