2011-05-09 130 views
4

我已經下載了here django註冊的一些模板。Django註冊模板

有人可以向我解釋重置密碼的工作原理嗎?

在password_reset_confirm.html,我不明白的地方的validlink來自:

{% extends "base.html" %} 
{% block content %} 
{% if validlink %} 
<form method="post" action="."> 
    {{ form.as_p }} 
    <input type="submit" value="Submit" /> 
</form> 
{% else %} 
<p>Password reset failed.</p> 
{% endif %} 
{% endblock %} 

在password_reset_email.html,我不明白的地方是塊所謂的「reset_link」從何而來,因爲我們是不擴展任何模板:

Reset password at {{ site_name }} 
{% block reset_link %} 
{{ protocol }}://{{ domain }}{% url auth_password_reset_confirm uidb36=uid, token=token %} 
{% endblock %} 

此外不應該是site.name?

回答

4

validlink被初始化在Django的password_reset_confirm觀點:

從該reset_link塊是here,這樣就可以從你的項目擴展該模板。

password_reset_confirmpassword_reset_email的視圖將從Django源代碼運行。例如,password_reset_confirm視圖將呈現模板:

template_name='registration/password_reset_confirm.html' 

假設你有TEMPLATE_LOADERS按以下順序在settings.py

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader' 
) 

通過在放置定製password_reset_confirm.html在您的項目:

yourproject/ 
    templates/ 
     registration/ 
      password_reset_confirm.html 

Django的模板加載器在您的項目中搜索password_reset_confirm.htmltemplates文件夾,然後在Django自己的註冊應用程序中,如果以前的搜索不成功。

您可以閱讀更多關於Django's template loader

1

從pypi下載的每個django應用程序都存儲在您的(如果使用virtualenv)envname/lib/site-packages/app-installed中。當你在本地服務器上的應用程序中定義URL時,你自己開發的應用程序就像網站包中的URL一樣存儲。如果您需要查看應用程序url的ref,可以查看相關的urls.py。在你的情況下,你可以去註冊並查看分配給它的url名稱。您的輸入應該與表格下方的"<input class='btn btn-primary' type="submit" value="{% trans 'Reset' %}" />"類似。 {%trans'重置'%}將帶您到達確切的網址。