一个支持api的可定制反馈表单的小框架

feed-gov-back的Python项目详细描述


一个启用API的小框架,可以将用户反馈表单添加到应用程序(或其他应用程序)中的现有应用程序中。

快速启动

  • 安装软件包:

    pip install feed-gov-back
    
  • settings

    INSTALLED_APPS = [
        ...
        'feedback',
    ]
    
  • 在项目url.py中包含反馈urlconf,如下所示:

    path('feedback/', include('feedback.services.urls'))
    
    or if not using the Api:
    
    path('feedback/', include('feedback.urls'))
    
  • 运行迁移并加载设备:

    ./manage.py migrate
    ./manage.py loaddata path/to/fedback/fixtures/*.json
    

使用make

Makefile提供了一些方便的命令:

make test  # run all tests
make sdist  # run python setup.py sdist to create a local installable

工作原理

FeedbackForm包含一个或多个不同的ElementType模型。这些 模型代表形式及其元素。 每次提交到FeedbackCollection的数据都会被收集,该FeedbackData记录包含 提交的每个表单元素。

由于表单可以放在web资源的不同部分,Placement记录可以创建到 将为申请的不同部分提交的表格数据组合在一起。安置没有 要预先创建,并且可以通过提供表单的唯一放置键动态生成。

rest api被公开以允许在外部操作模型,这在部署时非常有用 进入后端服务。

此外,还提供了接受表单提交的视图,以及用于呈现完整表单的模板标记。 或者是其中的一部分。

表单可以通过api、模型构建,也可以通过django管理员甚至fixture简单地创建。

元素类型

定义了3种元素类型:比例、大文本区域和文本输入。缩放元素可以接收 options覆盖默认值。选项和默认值为:

{
    "min": 1,
    "max": 5,
    "min_label": "Poor",
    "max_label": "Excellent",
    "type": int
}

It is also possible to explicitly define the scale labels by providing a list of labels instead of the min/max
combination

``labels: ["great", "indifferent", "poor"]``

In this case the "type" property of the options should be changed to ``str``

字段可以由提供的form_elementtemplate标记呈现,也可以在模板中手动呈现。

数据收集

数据收集到FeedbackData模型中,分组到FeedbackCollection条目中。 由于反馈表单可以在应用程序的不同部分中使用,因此该模型需要Placement来显示 此表格所涉及的申请或网站部分。如果没有明确提供位置, 将使用默认值。布局id也可以在运行时通过简单地将其作为字符串提供。 将创建新的Placement记录。

设置

Django应用程序中需要以下设置

SettingDescription
AUTH_USER_MODELA path to the User model. Defaults to ^{tt16}$
DEFAULT_PLACEMENT_KEYA key to use as default placement if one is not provided. Defaults to ^{tt17}$
ANONYMOUS_COLLECTIONA boolean to determine if to force anonymous collection or retain the user if available. Defaults to ^{tt18}$
MANAGED_FEEDBACK_MODELSSet to False to prevent the creation of database models. Defaults to ^{tt18}$

用法

包括完整的反馈表:

{% load feedback_form %}
{% feedback_form request 'FORM_REFERENCE' %}

或包含特定位置:

{% feedback_form request 'FORM_REFERENCE' 'PLACEMENT_ID' %}

注意,feedback_form标记需要请求通过它才能生成csrf_令牌。

关于上面标记示例中所示的form_引用的一个重要注意事项:form_引用可以是 反馈表单唯一键,它是唯一的uuid、表单模型实例本身或表单的dict表示。 这允许不同的使用模式,具体取决于此软件包的安装位置。 例如,如果要在一个由api和ui层组成的服务上使用反馈表单 应用程序,api可以安装允许创建模型的包,但显然不使用templatetags 因为它没有责任。但是,用户界面可以安装软件包,禁用模型管理,并且只有 通过传递从api调用返回的dict来使用标记。注意,在传递表单模型或dict的情况下 单引号应该省略。示例应用程序演示了这个概念。

造型

实现的模板标记将整个表单包装在id为feedback-form的div中。 随后,每个元素都用一个类feedback-form-element进行div包装。 submit按钮被分类为feedback-form-button。 在每个元素中,以下div包装名称、标签和描述字段: feedback-form-element-namefeedback-form-element-labelfeedback-form-element-description

示例应用程序

example目录包含一个使用反馈库的简单django项目。 它提供了一个包含postgres数据库的docker,可以用来隔离示例。 make文件允许基于本地sdist构建安装库。

要运行它,请创建一个虚拟环境并激活它。 然后提供您自己的数据库或docker-compose up使用Docker One。 从:

./manage.py migrate
./manage.py loaddata ./feed/fixtures/*.json
./manage.py runserver
  • 您可以通过http://localhost:8000/admin(创建访问管理员的超级用户)创建表单
  • 通过http://localhost:8000
  • 与表单交互
  • 只使用键加载表单:http://localhost:8000/key
  • 使用dict表示加载表单:http://localhost:8000/dict

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Play Framework 2.1中的简单搜索?   java:Springbeans的真正工作原理   java不能从字符串中提取数字   不同管道中的java共享ExecutionHandler   在Java中,如何为扩展comparator的类实现多个comparator方法?   通用混沌Java   java问题:从自定义类获取要添加到驱动程序类的形状   java如何利用HikariCP和Hibernate?   eclipse如何执行Java应用程序?   用户界面Java Swing:如何将JLabel的文本绑定到JTable选定行中的列?   java替换JPanel元素而不添加到面板的末尾?   java Sets根据action命令在按钮组中选择了特定的jradiobutton   在java中如何将从控制台添加的字符串中的元素添加到列表中   处理未在浏览器上运行的Java签名小程序   java如何在我的安卓应用程序中单击任意按钮时禁用音频音调?   编码如何在Java中将十六进制转换为utf8编码的字符串   java JSF Spring安全集成问题   java如何更正Oracle for Windows中的字符?   java Spark结构化流媒体:当前批次落后   java Hibernate根据最匹配的条件排序结果