2011-05-09 132 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'重置'%}将带您到达确切的网址。