跳转到主要内容

在您的Django项目中使用jSignature jQuery插件

项目描述

在您的Django项目中使用jSignature jQuery插件的简单方法。

它提供

  • 一个表单字段和一个表单小部件,通过Django表单处理jQuery插件;

  • 一个模型字段用于存储捕获的签名;

  • 一个混合模型,在您的任何Django模型中添加两个字段(签名/签名日期);

  • 一个模板过滤器,将签名作为base64图像URL渲染。

Latest PyPI version Build status Coverage status https://github.com/fle/django-jsignature/blob/master/screen.png

安装

pip install django-jsignature

使用

  • jsignature添加到您的INSTALLED_APPS

# settings.py
INSTALLED_APPS = (
    ...
    'jsignature',
)
  • 使用提供的模型字段(便于存储)

# models.py
from django.db import models
from jsignature.fields import JSignatureField

class SignatureModel(models.Model):
    signature = JSignatureField()
  • 在您的表单模板中

{{ form.media }}
<form action="" method="post">
    {{ form }}
    <input type="submit" value="Save" />
    {% csrf_token %}
</form>
  • 在您的显示模板中渲染来自数据库的图像值

{# yourtemplate.html #}
{% load jsignature_filters %}

<img src="{{ obj.signature|signature_base64 }}" alt="{{ obj }}" />
  • 默认情况下,jSignature旨在在admin之外工作,需要您在<head>中包含jQuery库。

    如果您想在Django管理站点中使用jSignature,请将JSIGNATURE_JQUERY设置项设置为admin。否则,如果设置为指向jQuery的任何URL,它将被自动包含。

    强烈建议您参考example_project示例,它位于本仓库中

自定义

JSignature插件选项在Python中可用

  • 全局,在您的设置中

# settings.py
JSIGNATURE_WIDTH = 500
JSIGNATURE_HEIGHT = 200
  • 具体来说,在您的表单中

# forms.py
from jsignature.forms import JSignatureField
from jsignature.widgets import JSignatureWidget

JSignatureField(widget=JSignatureWidget(jsignature_attrs={'color': '#CCC'}))

可用的设置包括

  • JSIGNATURE_WIDTH(宽度)

  • JSIGNATURE_HEIGHT(高度)

  • JSIGNATURE_COLOR(颜色)

  • JSIGNATURE_BACKGROUND_COLOR(背景颜色)

  • JSIGNATURE_DECOR_COLOR(装饰颜色)

  • JSIGNATURE_LINE_WIDTH(线宽)

  • JSIGNATURE_UNDO_BUTTON(撤销按钮)

  • JSIGNATURE_RESET_BUTTON(重置按钮)

在您的模型中

如果您想轻松存储签名,提供的混入提供了自动更新的signaturesignature_date

from django.db import models
from jsignature.mixins import JSignatureFieldsMixin

class JSignatureModel(JSignatureFieldsMixin):
    name = models.CharField()

在您的表单中

  • 如果您需要更精确地处理表单字段,可以直接使用它

# forms.py
from django import forms
from jsignature.forms import JSignatureField

class SignatureForm(forms.Form):
    signature = JSignatureField()
  • 保存时,直接使用draw_signature()访问图像

# views.py
from jsignature.utils import draw_signature
from myapp.forms import SignatureForm

def my_view(request):
    form = SignatureForm(request.POST or None)
    if form.is_valid():
        signature = form.cleaned_data.get('signature')
        if signature:
            # as an image
            signature_picture = draw_signature(signature)
            # or as a file
            signature_file_path = draw_signature(signature, as_file=True)

示例项目

如果您想演示此包,请使用示例项目

git clone https://github.com/fle/django-jsignature.git
cd django-jsignature
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e .
cd example_project
./manage.py migrate
./manage.py createsuperuser

填写用户信息,使用./manage.py runserver启动Django,然后访问http://127.0.0.1:8000/,您也可以使用您提供的凭据登录到管理员

作者

makinacom

更改日志

0.12 (2024-01-27)

** 修复错误 **

  • 绘制单个点

** 新功能 **

  • 更新了Github Actions。

  • 停止支持Python < 3.8

  • 停止支持Django < 4.2

  • 添加对pillow >= 10的支持

  • 更新jSignature到最新版本

0.11 (2022-01-17)

** 新功能 **

  • Django 4.0兼容性。

  • 迁移到Github Actions进行测试。

  • 在CI中添加flake8。

  • 停止支持Python < 3.6

  • 停止支持Django 1.11、2.0、2.1、3.0、3.1。

0.10 (2020-07-26)

** 新功能 **

  • 添加模板过滤器,以轻松将签名结构作为base64 URL渲染。

  • 添加前台使用完整示例。

0.9 (2020-04-18)

** 新功能 **

  • 添加对Django 2+的支持

  • 停止支持Django < 1.11

  • 添加JSIGNATURE_JQUERY设置以处理Django 2.1+中的管理员使用

0.8 (2014-12-04)

** 新功能 **

  • 添加对Python 3的支持(@Gagaro)

  • 添加对Django 1.7的支持(@Gagaro)

0.7.6 (2014-11-26)

** 新特性 **

  • 添加了一个设置来显示(或隐藏)重置按钮(@jsayles)

** 内部更改 **

  • 渲染现在基于模板(@andybak)

  • JavaScript已正确初始化(@andybak)

项目详情


下载文件

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

源分布

django-jsignature-0.12.tar.gz (24.6 kB 查看哈希值

上传于

构建分发

django_jsignature-0.12-py3-none-any.whl (23.2 kB 查看哈希值)

上传于 Python 3

由以下支持