使用formencode和webhelpers的简单声明性web表单

pyramid_webforms的Python项目详细描述


使用formencode和webhelpers的简单声明性web表单
========br/>



status:*早期开发,不稳定,未发布**.



i安装代码块::bash




示例
----


考虑以下金字塔项目结构:

代码块:普通的

My廑金字塔应用程序/
模块/
登录/
初始化py
窗体.py
验证器.py
视图.py
初始化py
模板/
登录.mako
_初始化py


让我们定义一个登录表单、它的字段和验证器。代码块:python

my pyramid应用程序/modules/signin/forms.py
from pyramid web表单import form
from mypyramid应用程序i18n import from。导入验证程序



登录或电子邮件={
"类型":"文本",
"标题":"登录或电子邮件",
"提示":"请输入您在注册过程中使用的登录或电子邮件。",
"大小":30,
"最大长度":50,
"验证程序":验证器。userloginoremail
}


password={
'type':'password',
'title':'password',
'tip':'uu('密码可以包含任何字母表的任何字符(最小为1,最大为64个字符)。'
为确保可靠性,我们建议使用非普通和长密码。注意,
"字母很重要。",
"大小写":30,
"最大长度":64,
"验证器":验证器。用户密码,
"值":",
}


"记住"me={
"类型":"复选框",
"标题":("记住"er me'),
"提示":(如果希望当前浏览器保留"
"会话以供进一步访问,请设置此复选框。),
"选定":false,
"验证器":验证器。rememberusersion
}

class signinform(form):
ORM属性和元数据"记住我"]
]
代码块::python

My_金字塔app/modules/signin/validators.py
import re
import formencode

mencode.validators.bool

类用户登录(formencode.validators.regex):
非空=真
strip=真
regex=用户登录


类用户电子邮件(formencode.validators.email):
非空=真
strip=真
max=50
def_to_python(self,email,state):
email=super(useremail,self)。\u to_python(email,state)
return email.lower()


class userloginOremail(userlogin):
def_to_python(self,value,state):
if'@'in value:
validator=useremail
其他:
validator=userlogin
value=validator.to_python(value,state)
返回值


def validate_python(self,value,state):
pass



class userpassword(formencode.validators.unicodestring):
not_empty=true
max=64




>现在我们可以在金字塔视图中使用表单可调用项。

代码块:pythondef signin_form(self):
请求=self。请求
如果请求。post:
尝试:
form=signinform.validate(请求)
除signinform外。无效,错误为:
;重定向或错误处理
传递
其他:
使用表单数据登录用户
传递

代码块::mako

My_金字塔app/templates/signin.mako
${signin_form(request)}






这里是关键的概念点:

-表单字段是用普通字典定义的;
-字段可以被任何其他模块重用;
-每个字段记录包含在指定的基于formencode的验证器中;
-使用简单的声明性接口定义表单。




|键类型默认
>+==============================================================================================================================================================================街道金字塔西ebforms:模板/submit懔alternate.p懔u wf懔u mako
+-----------------------------+-----------------------------+-----------------------------+
pyramd懔u webforms.submit懔alternate懔u tpl str_pyramd懔u webforms:模板/submit懔alternate.p懔u mako
+—-----------------+------------+--------------------------------+
金字塔网络表单.form tpl str金字塔网络表单:模板/form.p wf u mako
+---------------------------+------------+------------+-----------------------------------------+
金字塔web表单:模板/fieldset.p_wf_mako
+---------------------------+---------------------------+---------------------------+---------------------------+
金字塔web表单s.field_tpl_str_pyramid_u webforms:模板/field.p_wf_u mako
+---------------------------+------------+---------------------------+
pyramid_u webforms.tooltip_u tpl str_pyramid_u webforms:模板s/tooltip.p_wf_u mako
+-----------------------------+-----------------------------+-----------------------------+
pyramd_webforms.form_error tpl str pyramd webforms:templates/form_error.p_wf_u mako
+-----------------------------—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————+



另请参见
==

-`formencode project`\u
-`webhelpers project`\u



……_ formencode项目:https://github.com/formencode/formencode
…_ Webhelpers项目:http://sluggo.discarding.cc/python/webhelpers/index.html

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

推荐PyPI第三方库


热门话题
Gson类中的java验证错误   If和elseif之间的java差异?   字典Java8地图。输入比较器   java连接到远程计算机以获得WMI支持   java如何使用改型处理JSON对象中的空值   在Java中使用Comparator时不可编译的源代码   java将Jar添加到JSP的运行时路径   带有随机对象的while循环的java大O时间复杂性   java可以在不考虑参数的情况下模拟方法吗?   java我有一个简单的代码,它不工作。无法修复错误“println”   向eclipse添加Xively java库   java是否可以启用本机代码的缓存?   全局变量如何在Java中的所有类之间共享要使用的语言环境?   Java内存游戏如何翻转单个卡?