zoukankan      html  css  js  c++  java
  • 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方式

  • 相关阅读:
    2017D 方格分割
    2017B 等差素数列
    完全平方数
    K-th Number(二分答案+尺取法判断)
    cf634div3
    performSelector: 与 dispatch_time 异同
    UIButton 的属性与方法
    Node.js 学习笔记三
    [2019杭电多校第一场][hdu6578]Blank(dp)
    [2019杭电多校第一场][hdu6582]Path(最短路&&最小割)
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/5332687.html
Copyright © 2011-2022 走看看