跳转到主要内容

Keg的认证视图

项目描述

https://circleci.com/gh/level12/keg-login.svg?style=svg https://codecov.io/github/level12/keg-login/coverage.svg?branch=master

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 .

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于安装软件包的信息。

源代码分发

KegLogin-0.5.4.tar.gz (21.4 kB 查看哈希值)

上传时间 源代码

构建分发

KegLogin-0.5.4-py2.py3-none-any.whl (25.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持