在Google App Engine上使用WTForms和webapp以及Django模板,可以通过以下步骤实现:
在你的项目目录下,创建一个名为app.yaml
的文件,然后使用以下命令安装WTForms和webapp2:
pip install WTForms
pip install webapp2
main.py
的文件,并在其中导入所需的库和模块:import webapp2
from google.appengine.ext import ndb
from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.ext.webapp import template
from wtforms import Form, StringField, TextAreaField, PasswordField, validators
forms.py
的文件,并在其中定义一个WTForms表单:from wtforms import Form, StringField, TextAreaField, PasswordField, validators
class MyForm(Form):
name = StringField('Name', [validators.Length(min=4, max=50)])
email = StringField('Email Address', [validators.Length(min=6, max=50)])
subject = StringField('Subject', [validators.Length(min=4, max=100)])
message = TextAreaField('Message', [validators.Length(min=10)])
main.py
中创建一个处理表单提交的处理程序:class MyFormHandler(webapp2.RequestHandler):
def post(self):
form = MyForm(self.request.POST)
if form.validate():
# 处理表单数据
self.redirect('/thanks')
else:
# 显示错误消息
template_values = {
'form': form
}
template = template.render('templates/myform.html', template_values)
self.response.write(template)
app.yaml
中添加处理程序:handlers:
- url: /.*
script: main.app
main.py
中创建一个处理GET请求的处理程序:class MyFormGETHandler(webapp2.RequestHandler):
def get(self):
form = MyForm()
template_values = {
'form': form
}
template = template.render('templates/myform.html', template_values)
self.response.write(template)
app.yaml
中添加处理程序:handlers:
- url: /myform
script: main.app
templates
目录下创建一个名为myform.html
的文件,并在其中定义表单模板:<form action="/myform" method="post">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name() }}
{{ form.email.label }} {{ form.email() }}
{{ form.subject.label }} {{ form.subject() }}
{{ form.message.label }} {{ form.message() }}
<input type="submit" value="Submit">
</form>
main.py
中创建一个处理GET请求的处理程序:class ThanksHandler(webapp2.RequestHandler):
def get(self):
template = template.render('templates/thanks.html', {})
self.response.write(template)
app.yaml
中添加处理程序:handlers:
- url: /thanks
script: main.app
templates
目录下创建一个名为thanks.html
的文件,并在其中定义感谢页面模板:<h1>Thank you for your submission!</h1>
app.yaml
中添加以下配置:runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /static
static_dir: static
libraries:
- name: webapp2
version: "2.5.2"
- name: jinja2
version: "2.6"
现在,你可以在Google App Engine上使用WTForms和webapp2以及Django模板了。