python--flask使用

Flask是一个使用 Python 编写的轻量级 Web 应用框架。
下面我将使用Flask框架,创建一个简单的html页面示例。

 

1.项目的目录结构如下所示:
exweb\
  uniqueenv\
  app.py
  templates\

      base.html

      hello_form.html
                 index.html


2.创建网站根目录exweb
mkdir exweb


3.在网站根目录下创建一个虚拟环境,虚拟环境是主python的一份拷贝,好处是你可以只安装flask包到该虚拟目录,你的主python不会受到影响,另一个好处是你不需要再有root权限
cd exweb
virtualenv uniqueenv

 

4.安装flask
uniqueenv/bin/pip install flask

 

5.flask使用,app.py代码如下

#-*- coding: UTF-8 -*-                                                                                                                                  
from flask import Flask,render_template,request
from flask.ext.wtf import Form
from wtforms import TextField, BooleanField, TextAreaField
from wtforms.validators import Required, Length

app = Flask(__name__)

#CSRF_ENABLED 配置是为了激活 跨站点请求伪造 保护
app.config['CSRF_ENABLED']=True
app.config['SECRET_KEY']='xxx'

#form表单类
class HelloForm(Form):
    name = TextField('name',validators = [Required()])
    greet=TextField('greet',validators=[Required()])


@app.route('/',methods=['GET','POST'])
def index():
        #get方式提交,若url参数不为空,直接跳转到显示界面
        name = request.args.get('name')
        greet = request.args.get('greet')
        if name!='' and name!=None and greet!='' and greet!=None:
                greeting="%s,%s"%(name,greet)
                return render_template('index.html',
                        title=u'显示信息',
                        greeting = greeting)


        #否则为post方式提交表单,跳转到输入信息界面
        form = HelloForm()
        if form.validate_on_submit():
                greeting="%s,%s"%(form.name.data,form.greet.data)
                return render_template('index.html',
                        title=u'显示信息',
                        greeting = greeting)
        return render_template('hello_form.html',
                title=u'输入信息',
                form = form)

app.run(debug=True)

 

6.上一步我们从 Flask 框架中导入一个名为 render_template 的新函数,在内部,render_template 调用了 Jinja2 模板引擎,Jinja2 会把模板参数提供的相应的值替换 {{...}} 块。
模板放在templates文件夹下.
mkdir templates

首先创建一个基础模板页 base.html

<html>                                                                                                                 
         <head>
                <title>{{title}}</title>
        </head>
        <body>
                {% block content %}{% endblock %}
        </body>
</html>

 

输入信息页 hello_form.html

{% extends "base.html" %}                                                                                                 

{% block content %}
<h1>Fill out this form</h1>    
<form action="" method="POST">
{{form.hidden_tag()}}
A Greeting:
{{form.greet(size=30,maxlength=140)}}
<br/>
Your Name:
{{form.name(size=30,maxlength=140)}}
<br/>
<input type="submit">
</form>
{% endblock %}

 

显示信息页 index.html

{% extends "base.html" %}                                                                                                                            

{% block content %}
{%if greeting:%}
 I just wanted to say <em style="color:green;font-size:2em;">{{greeting}}</em>
{%endif%}
{% endblock %}

 

7.运行:uniqueenv/bin/python app.py

注意运行的时候要使用虚拟目录中的python解释器

8.结果:

(1)Get方式

(2)Post方式

 

posted on 2016-03-29 13:47  迪米特  阅读(955)  评论(0编辑  收藏  举报

导航