Keg的认证视图
项目描述
为Keg应用程序提供用户登录和密码管理的基类视图和表单。
用法
有5个基本视图,允许用户登录、注销和设置密码。
登录
注销
更改密码
忘记密码
重置密码
要在您的应用程序中使用这些视图,请派生适当的视图及其包含的Responder
类,并实现纯虚方法。
您可以通过在<my application>/templates/keg-login/
下创建相应命名的模板或在您的Responder
子类中覆盖template
来覆盖这些视图使用的模板。
示例
from keg import Keg
from keg_login.ext import KegLogin
from keg_login import views
app = Keg(__name__)
KegLogin(app)
class ForgotPassword(views.ForgotPassword):
class Responder(views.ForgotPassword.Responder):
def request_password_reset(self, email):
generate_token_and_send_email(email)
模板
Keg-Login充分利用了一个名为宏的Jinja2特性。它允许Keg-Login的用户在不进行大量工作的情况下覆盖功能或设计的一部分。以下是具体做法
安装Keg-Login后,在您的应用程序模板文件夹中创建一个名为keg-login的文件夹。
使用自己的模板
在此文件夹中创建一个名为base.html
的文件
在base.html
中构建或扩展您想要围绕登录视图的模板。Keg-Login唯一期望的是在base.html
中某处公开一个名为block main的块。例如...
{% extends your-master-template.html %}
{# This block might be defined in your-master-template.html #}
{% block content %}
{% block main %}{% endblock %}
{% endblock %}
现在Keg-Login将使用主模板作为认证视图的基础。
覆盖Keg-Login表单渲染(使用宏系统)
在app/templates/keg-login/macros.html
中创建一个名为macros.html
的文件。最初我们只需要添加
{% extends "keg-login/_macros.html" %}
_macros.html
文件定义了用于渲染视图模板的所有基本/默认宏。Keg-Login中的所有内容都是一个宏。
一个常见的覆盖宏是render_wrapper宏。这是Jinja2的一个高级特性,允许Keg-Login中的表单被额外的HTML“包裹”。例如,如果您有一堆想要围绕表单元素包裹的额外代码,这需要更多的解释...
比如说,您有一个这个master
模板...
<body>
<div class="container">
{% block container %} {% endblock %}
</div>
</body>
然后您在keg-login/base.html
中这样扩展...
{% extends "base.html" %}
{% block container %}
<div class="auth-container">
{% block main %}
{% endblock %}
</div>
{% endblock container %}
没有render_wrapper
,我们只能对表单进行如此多的定制。比如说,登录表单的标签将位于body>div.container>div.auth-container>form>input(s)。如果我们需要在form和表单之间添加一个HTML元素,这将是无法实现的(不可接受的,您可能在该点停止使用Keg-Login,或者创建类似render_wrapper的东西)。
要使用render_wrapper
,在您的macros.html
文件中这样...
{% macro render_wrapper() %}
{# the form being rendered (login/forgot password/etc) will be rendered
whereever this is placed #}
{{ caller() }}
{% endmacro %}
如果您想在form元素中包裹一个div...
{% macro render_wrapper() %}
<div class="form-wrapper">
{{ caller() }}
</div>
{% endmacro %}
现在,所有Keg-Login表单都将得到这样的处理。
开发
分支与状态
master
:我们的“生产”分支
所有其他分支都是功能分支。
环境
安装需求
$ pip install --use-wheel --no-index --find-links=requirements/wheelhouse -r requirements/dev-env.txt
$ pip install -e .
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于安装软件包的信息。