安装deform
pip install pyramid_deformpip install js.deform
deform表单库介绍
与pyramid同属Pylons Project表单库
Colander:定义表单结构
Peppercom:序列化和反序列化
Chameleon:模板引擎
development.ini里导入pyramid_deform
[app:main]
use = egg:MyShop
pyramid.reload_templates = true
pyramid.debug_authorization = true
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
pyramid_debugtoolbar
pyramid_tm
pyramid_layout
pyramid_deform
创建lib/deforms.py文件
# -*- coding:UTF-8 -*-
import colander
import deform
from js.deform import deform as deform_static
class LoginFormSchema(colander.MappingSchema): # 定义一个LoginFormSchema表单结构 MappingSchema表示一个映射类型
username = colander.SchemaNode(colander.Str()) # colander.SchemaNode相当于定义的Column
password = colander.SchemaNode(colander.Str())
在需要的视图views里导入
如login.py中
# -*- coding:UTF-8 -*-
from pyramid.response import Response
from pyramid.view import view_config, view_defaults
from pyramid.httpexceptions import HTTPFound, HTTPBadRequest, HTTPServerError, \
HTTPForbidden, HTTPUnauthorized
from pyramid.security import remember, forget
from myshop.lib import category, user, deforms
from base import CBase
ctrl = 'login'
# @view_config(route_name='home', renderer='templates/mytemplate.pt')
@view_defaults(route_name='/')
class login(CBase):
def __init__(self, request):
CBase.__init__(self, request)
self.request.title = u'登录'
@view_config(match_param=('ctrl=%s' % ctrl, 'action=view'),
renderer="login.html")
# renderer="string")
def view(self):
deforms.deform_static.need() # 使用deform必须步骤
schema = deforms.LoginFormSchema() # 声明一个schema
# 声明一个表单
form = deforms.deform.Form(schema,
buttons=('submit',)) # 表单上需要哪些按钮
return {
'title':'login',
'form':form.render(), #显示表单
}
模板login.html中显示声明的表单
<%inherit file="layout/login_base.html"/>
<%block name="log_c">
<div class="log_c">
${form | n}
</div>
</%block>
显示如下:

来源:https://www.cnblogs.com/yifengs/p/12274788.html