在您的Django项目中使用jSignature jQuery插件
项目描述
在您的Django项目中使用jSignature jQuery插件的简单方法。
它提供
一个表单字段和一个表单小部件,通过Django表单处理jQuery插件;
一个模型字段用于存储捕获的签名;
一个混合模型,在您的任何Django模型中添加两个字段(签名/签名日期);
一个模板过滤器,将签名作为base64图像URL渲染。
安装
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
(重置按钮)
在您的模型中
如果您想轻松存储签名,提供的混入提供了自动更新的signature和signature_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/,您也可以使用您提供的凭据登录到管理员。
更改日志
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)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。