Python Web框架Flask下网站开发入门实例


Posted in Python onFebruary 08, 2015

一、Flask简介

Flask 是一个 Python 实现的 Web 开发微框架。官网:http://flask.pocoo.org/

二、Demo

1、代码结构

.

├── blog.py

├── static

│   ├── css

│   │   └── index.css

│   ├── images

│   │   ├── cat.jpg

│   │   └── sheying1229.jpg

│   └── js

└── templates

    ├── index.html

    ├── login.html

    ├── regist.html

    └── upload.html
5 directories, 8 files

2、主程序blog.py

#!/usr/bin/python

#coding:utf8
from flask import Flask, render_template, url_for, request,redirect,make_response,session

import os,MySQLdb
app = Flask(__name__)

app.secret_key='afjlsjfowflajflkajfkjfkaljf'

user_list = ['jim','max','py']
imagepath = os.path.join(os.getcwd(),"static/images")
@app.route('/')

def index():

    username = request.cookies.get('username')

    if not username:

        username = u'请先登录'

    islogin = session.get('islogin')

    nav_list = [u'首页',u'经济',u'文化',u'科技',u'娱乐']

    blog = {'title':'welcome to my blog','content':'hello, welcome to my blog.'}

    blogtag = {'javascript':10,"python":20,"shell":5}

    img = url_for('static', filename="images/cat.jpg")

    return render_template('index.html', nav_list=nav_list, username=username, blog = blog, blogtag = blogtag, img=img, islogin=islogin)
@app.route('/reg', methods=['GET','POST'])

def regist():

    if request.method == 'POST':

        username = request.form['username']

        conn = MySQLdb.connect(user='root',passwd='admin',host='127.0.0.1')

        conn.select_db('blog')

        curr = conn.cursor()

        sql = 'insert into `user` (`id`,`username`) values (%d,"%s")' % (1,username)

        curr.execute(sql)

        conn.commit()

        curr.close()

        conn.close()

        return "user %s regist ok!" % request.form['username']

    else:

        #request.args['username']

        return render_template('regist.html')
@app.route('/upload', methods=['GET','POST'])

def upload():

    if request.method == 'POST':

        username = request.form['username']

        file = request.files['img']

        filename = file.filename

        file.save(os.path.join(imagepath,filename))

        return "<img src='static/images/%s' alt=''/>" % filename

    else:

        return render_template('upload.html')
@app.route('/login/', methods=['GET','POST'])

def login():

    if request.method == 'POST':

        username = request.form.get('username')

        if username in user_list:

            response = make_response(redirect('/'))

            response.set_cookie('username', value=username, max_age=300)

            session['islogin'] = '1'

            return response

        else:

            session['islogin'] = '0'

            return redirect('/login/')

    else:

        return render_template('login.html')
if __name__ == '__main__':

    app.run(debug=True,host='0.0.0.0',port=5000)

主要有首页、注册、登录、上传页面。

blog.py主要是展示了Flask中常见功能用法:路由,数据库操作,cookie,session,redirect,表单,文件上传,调试,Web服务器的IP和端口,静态文件读取等。

3、首页模板index.html

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8"/>

    <title>Flask DEMO</title>

    <link rel="stylesheet" type="text/css" href="static/css/index.css"/>

</head>

<body>

    <div class="header">

        {%if islogin == '1' %}

        <h1>Welcome ,{{username}}!</h1>

        {%else%}

        <h1>{{username}}!</h1>

        {%endif%}

        <div class="nav">

            <ul>

                {%for nav in nav_list%}

                <li><a href="{{nav}}">{{nav}}</a></li>

                {%endfor%}

            </ul>

        </div>

    </div>

    <div class="container">

        <div class="item">

            <h1>{{blog['title']}}</h1>

            <div class="content">

                <img src="/static/images/cat.jpg" alt="cat" />

                <p>{{blog['content']}}</p>

                <img src="{{img}}" alt="cat" />

            </div>

        </div>

        <div class="side">

            <ul>

                {%for key,value in blogtag.items()%}

                    <li>{{key}}({{value}})</li>

                {%endfor%}

            </ul>

        </div>

    </div>

</body>

</html>

这个模板主要展示了在Flask模板中如何读取各种类型的变量。

4、登录页面login.html

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8"/>

    <title>Login</title>

    <link rel="stylesheet" type="text/css" href="static/css/index.css"/>

</head>

<body>

    <div class="header">

        <h1>Login</h1>

    </div>

    <div class="container">

        <div class="item">

            <form action="" method="post">

                <input type="text" placeholder="please input username" name="username" /><br/>

                <input type="submit" value="Login"/>

            </form>

        </div>

    </div>

</body>

</html>

结合blog.py主要展示表单如何提交取值,cookie和session应用。

5、注册页面regist.html

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8"/>

    <title>Regist</title>

    <link rel="stylesheet" type="text/css" href="static/css/index.css"/>

</head>

<body>

    <div class="header">

        <h1>Regist</h1>

    </div>

    <div class="container">

        <div class="item">

            <form action="" method="post">

                <input type="text" placeholder="please input username" name="username" /><br/>

                <input type="submit" value="Regist"/>

            </form>

        </div>

    </div>

</body>

</html>

结合blog.py主要展示了数据库操作。

6、上传页面upload.html

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8"/>

    <title>Upload</title>

    <link rel="stylesheet" type="text/css" href="static/css/index.css"/>

</head>

<body>

    <div class="header">

        <h1>Upload</h1>

    </div>

    <div class="container">

        <div class="item">

            <form action="" method="post" enctype="multipart/form-data">

                <input type="text" name="username" /><br/>

                <input type="file" name="img" /><br/>

                <input type="submit" value="Upload"/>

            </form>

        </div>

    </div>

</body>

</html>

结合blog.py主要展示了如何上传文件。

7、运行效果

Python Web框架Flask下网站开发入门实例

Python 相关文章推荐
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
如何在python中使用selenium的示例
Dec 26 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
Jan 29 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
python实现超级马里奥
Mar 18 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 Python
详解Python小数据池和代码块缓存机制
Apr 07 Python
Python中使用wxPython开发的一个简易笔记本程序实例
Feb 08 #Python
Python常用的日期时间处理方法示例
Feb 08 #Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 #Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 #Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 #Python
Python Web框架Flask中使用百度云存储BCS实例
Feb 08 #Python
Python Web框架Flask中使用新浪SAE云存储实例
Feb 08 #Python
You might like
php实现ping
2006/10/09 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
ini_set的用法介绍
2014/01/07 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
vue集成chart.js的实现方法
2019/08/20 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
python scipy卷积运算的实现方法
2019/09/16 Python
Python for循环及基础用法详解
2019/11/08 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
大学老师推荐信
2014/02/25 职场文书
家长建议怎么写
2014/05/15 职场文书
好的旅游活动方案
2014/08/19 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书