对静态站点进行简单、无痛的表单处理。

django-fwdform的Python项目详细描述


http://img.shields.io/travis/mishbahr/django-fwdform.svg?style=flat-squareLatest VersionDownloadsLicensehttp://img.shields.io/coveralls/mishbahr/django-fwdform.svg?style=flat-square

对静态站点进行简单、无痛的表单处理。

为什么?

我在aws s3上有几个网站,每个月只花一分钱……我不想 每月支付20美元(每张表格)处理联系表格!

20+由1个heroku app提供支持的域=利润!

功能

  • 多站点支持。
  • 无限格式
  • 无限制提交
  • 通过Akismet保护垃圾邮件。
  • 使用ajax提交表单。
  • 用于管理表单的rest api。

快速启动

  1. 安装django-fwdform

    pip install django-fwdform
    
  2. fwdform添加到INSTALLED_APPS

    INSTALLED_APPS = (
        ...
        'corsheaders',
        'fwdform',
        ...
    )
    
  3. 同步数据库:

    python manage.py migrate
    
  4. fwdform.urls添加到项目的url模块:

    urlpatterns = patterns(
        ...
        url(r'^', include('fwdform.urls', namespace='fwdform')),
        ...
    )
    

依赖关系

此包要求正确安装和配置django-cors-headers。使用pip安装django-fwdform时,会自动安装django-cors-headers

您需要将corsheaders中间件类添加到MIDDLEWARE_CLASSES设置:

MIDDLEWARE_CLASSES = (
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
)

注意CorsMiddleware需要在django的CommonMiddleware之前出现。

允许来自所有域的CORS请求:

CORS_ORIGIN_ALLOW_ALL = True

有关详细信息,请参见https://github.com/ottoyiu/django-cors-headers

样本表格

<form action="//example.com/send/<form_hash>/" method="POST">
    <input type="text" name="name" required="required"/>
    <input type="email" name="email" required="required" />
    <textarea name="message" rows="5"></textarea>
    <input type="submit" value="Send">
</form>

特殊表单输入

u下一步

默认情况下,提交表单后,用户会看到fwdform“谢谢”页面。您可以为该页提供另一个url。

<input type="hidden" name="_next" value="//example.com/thanks.html" />

_主题

此值用于电子邮件的主题:

<input type="hidden" name="_subject" value="Contact Form" />

_明白了

添加此“蜜罐”字段。如果提供了一个值,提交将被忽略。输入应该用css隐藏:

<input type="text" name="_gotcha" style="display:none;" />

name/电子邮件/消息

通过Akismet进行SPAN预防-垃圾邮件检查器后端查找这些特别命名的表单输入:

<input type="text" name="name" placeholder="Your Name">
<input type="email" name="email" placeholder="Your Email">
<textarea name="message" rows="5"></textarea>

rest api

注册一个表单,这将为新创建的表单返回一个hashid:

$ curl --data "name=Contact%20Form&recipients=conttact@example.com" http://example.com/<site_token>/
{"hashid": "0rPGVlYZWqMRE8OebjoM1ogpmvNL23A9dxJzywQD"}

通过将已知的^ {TT11}$作为PARAM:

更新现有的窗体配置
$ curl --data "recipients=hello@example.com&hashid=0rPGVlYZWqMRE8OebjoM1ogpmvNL23A9dxJzywQD" http://example.com/<site_token>/

ajax提交

您可以通过ajax使用fwdform。这甚至适用于跨起源。

如果您使用jquery,可以这样做:

$.ajax({
    url: $form.attr("action"),
    method: "POST",
    data: $form.serialize(),
    dataType: "json",
    headers: {"X-Requested-With": "XMLHttpRequest"},
});

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

推荐PyPI第三方库


热门话题
带truezip的java拆分zip   java Spring,AppEngine:在AppEngine的数据源中添加postgresql url   java Android coverflow   java以编程方式创建复合过滤器,以在log4j 2中定义多个过滤器   java jpa eclipselink异常[eclipselink 4002]   中的java WordNet数据库目录相对路径。罐子   java无法在Spring Boot 2/3中显示登录的用户   java Onetomany:未找到联接表错误   java数据模型演化   java方法在类型列表中添加的(对象)不适用于参数(int)意味着什么?   用java打印两个数组   java SNMP4J发送从不超时   java添加/删除联系人(EditText)+类别(SpinnerBox),可以根据需要动态添加/删除多个联系人   语句和PreparedStatement之间的java差异   java在运行作为JAR归档文件分发的项目时加载图像等资源   来自应用程序或外部服务器的java Cron作业   多线程Java并发:并发添加和清除列表项   java更改单元测试的私有方法行为