python入门篇1:基于flask的留言板网站实现
2014-06-11 23:26
1261 查看
声明:以下内容是本人大二在某公司实习时学习python做的一个小练习!代码风格比较差,不怎么优美!还请大家指教!
一.题目与背景知识说明
(1)题目描述
学习flask,并编写一个基于flask技术的留言板程序。留言板需求较为简单,用户可以在页面输入昵称和邮箱,输入留言内容(至少50字,上限500字),提交后则在页面下方显示最新的十条留言信息
(2)flask简介
flask是一个轻量级的Web应用框架, 使用Python编写。基于 WerkzeugWSGI工具箱和 Jinja2模板引擎。Flask使用 BSD 授权。Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
二.需求分析
1.网络留言板,又称为留言簿或留言本,是目前网站中使用较广泛的一种与用户沟通、交流的方式。通过留言板,可收集来自用户的意见或需求信息,并可作出相应的回复,从而实现网站与客户之间及不同客户之间的交流与沟通。通过留言板用户和访问者在Internet上实现信息的快速传递,提高办事效率。因此留言板已成为现代人沟通和获取消息的重要组成部分。开发一个留言系统,首先需要确定留言的功能是什么,也就是用户想要留言版所拥有的作用。用户使用留言是按照一定的流程来进行的:用户输入姓名进入留言,可以就某个话题展开讨论,通过留言功能给个人或者网站提出自己的意见。
三.程序设计思路
本程序基于flask的web框架,用python实现了留言板功能,留言数据存储在sqlite数据库上。并且用bootstrap制作了较为简洁美观的界面。下面简要说明下具体实现:
(1)具体函数方法:
def connect_db():快速连接到指定数据库的方法
def init_db():初始化数据库
def show_entries():输出函数,会将条目作为字典传递给 show_entries.html 模板,并返回之后的渲染结果
def add_entry():用户添加新的留言信息函数,并只响应 POST 请求,表单显示在 show_entries.而且对输入的字数做了限制在50字到500字范围,不在这个范围就不提交到数据库.
def login():登录函数
def logout():退出登录函数
(2)数据库
本次实验采用的是sqlite数据库,下面是数据库中建立的存储留言信息的table ,如图所示:
id是自增的,用来做主键,比如显示最新的十条留言信息就是用id值实现.
四.程序运行说明
首先,打开浏览器输入程序的地址,显示界面如下图:
点击输入留言信息,运行图片如下:
显示最新的留言信息如下:(最新留言名字加大显示)
五.程序清单(附有注释)
六、小结(收获和体会)
由于出学python,所以几天时间搞这个还是比较大压力的!还有就是之前看flask觉得很吃力,现在虽然做出东西来,但是心里还是没有底子的感觉!不过就是觉得bootstrap很方便,很好用!但是时间关系,就做的很一般。只能说希望在以后的实践中逐渐提高自己的水平吧,尽快摆脱菜鸟身份!
一.题目与背景知识说明
(1)题目描述
学习flask,并编写一个基于flask技术的留言板程序。留言板需求较为简单,用户可以在页面输入昵称和邮箱,输入留言内容(至少50字,上限500字),提交后则在页面下方显示最新的十条留言信息
(2)flask简介
flask是一个轻量级的Web应用框架, 使用Python编写。基于 WerkzeugWSGI工具箱和 Jinja2模板引擎。Flask使用 BSD 授权。Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
二.需求分析
1.网络留言板,又称为留言簿或留言本,是目前网站中使用较广泛的一种与用户沟通、交流的方式。通过留言板,可收集来自用户的意见或需求信息,并可作出相应的回复,从而实现网站与客户之间及不同客户之间的交流与沟通。通过留言板用户和访问者在Internet上实现信息的快速传递,提高办事效率。因此留言板已成为现代人沟通和获取消息的重要组成部分。开发一个留言系统,首先需要确定留言的功能是什么,也就是用户想要留言版所拥有的作用。用户使用留言是按照一定的流程来进行的:用户输入姓名进入留言,可以就某个话题展开讨论,通过留言功能给个人或者网站提出自己的意见。
三.程序设计思路
本程序基于flask的web框架,用python实现了留言板功能,留言数据存储在sqlite数据库上。并且用bootstrap制作了较为简洁美观的界面。下面简要说明下具体实现:
(1)具体函数方法:
def connect_db():快速连接到指定数据库的方法
def init_db():初始化数据库
def show_entries():输出函数,会将条目作为字典传递给 show_entries.html 模板,并返回之后的渲染结果
def add_entry():用户添加新的留言信息函数,并只响应 POST 请求,表单显示在 show_entries.而且对输入的字数做了限制在50字到500字范围,不在这个范围就不提交到数据库.
def login():登录函数
def logout():退出登录函数
(2)数据库
本次实验采用的是sqlite数据库,下面是数据库中建立的存储留言信息的table ,如图所示:
id是自增的,用来做主键,比如显示最新的十条留言信息就是用id值实现.
四.程序运行说明
首先,打开浏览器输入程序的地址,显示界面如下图:
点击输入留言信息,运行图片如下:
显示最新的留言信息如下:(最新留言名字加大显示)
五.程序清单(附有注释)
# -*- coding: utf-8 -*- from __future__ import with_statement import sqlite3 from flask import Flask,request,session,g,redirect,url_for,\ abort,render_template,flash from contextlib import closing # configuration DATABASE = '/home/feng/project/flaskr/flaskr.db'#数据库存储路径 DEBUG = True SECRET_KEY = 'development key' USERNAME = 'admin' PASSWORD = 'default' #create our little application :) app = Flask(__name__) app.config.from_object(__name__) app.config.from_envvar('FLASKR_SETTINGS', silent=True) def connect_db():#快速连接到指定数据库的方法 return sqlite3.connect(app.config['DATABASE']) def init_db():#初始化数据库 with closing(connect_db()) as db: with app.open_resource('schema.sql') as f: db.cursor().executescript(f.read()) db.commit() @app.before_request def before_request(): g.db = connect_db() @app.teardown_request def teardown_request(exception): g.db.close() @app.route('/') def show_entries():#输出函数,会将条目作为字典传递给 show_entries.html 模板,并返回之后的渲染结果 cur = g.db.execute('select name,email,text from entries order by id desc limit 10') entries = [dict(name=row[0], email=row[1], text=row[2]) for row in cur.fetchall()] return render_template('show_entries.html', entries=entries) @app.route('/add', methods=['POST']) def add_entry():#用户添加新的留言信息函数,并只响应 POST 请求,表单显示在 show_entries if not session.get('logged_in'): abort(401) if len(request.form['text']) >50 and len(request.form['text'])<500:#实现控制字数在50到500范围内 g.db.execute('insert into entries (name,email,text) values (?,?,?)', [request.form['name'],request.form['email'], request.form['text']]) g.db.commit() flash('New entry was successfully posted') else: flash('The input range must be between 50 and 500 characters ')#如果留言信息不在范围内作出提示 return redirect(url_for('show_entries')) @app.route('/login', methods=['GET', 'POST']) def login():#登入函数 error = None if request.method == 'POST': if request.form['username'] != app.config['USERNAME']: error = 'name error' elif request.form['password'] != app.config['PASSWORD']: error = 'password error' else: session['logged_in'] = True flash('log in') return redirect(url_for('show_entries')) return render_template('login.html', error=error) @app.route('/logout') def logout():#退出登录函数 session.pop('logged_in', None) flash('log out') return redirect(url_for('show_entries')) if __name__ == '__main__': init_db() app.run(debug=True)
六、小结(收获和体会)
由于出学python,所以几天时间搞这个还是比较大压力的!还有就是之前看flask觉得很吃力,现在虽然做出东西来,但是心里还是没有底子的感觉!不过就是觉得bootstrap很方便,很好用!但是时间关系,就做的很一般。只能说希望在以后的实践中逐渐提高自己的水平吧,尽快摆脱菜鸟身份!
相关文章推荐
- 基于Python-Flask实现的网站例子
- flask框架实战—简单图片社交网站(一):Python语言快速入门
- Python基于pyCUDA实现GPU加速并行计算功能入门教程
- 11.python并发入门(part8 基于线程队列实现生产者消费者模型)
- 基于 Agent 的模型入门:Python 实现隔离仿真
- 《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- Python Web框架Flask下网站开发入门实例
- 基于 Agent 的模型入门Python实现 读书笔记
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
- Python Web框架Flask下网站开发入门实例
- D-Bus入门(四)——QTDBUS代码,实现ofono代码下的python测试文件activite-context的功能
- 基于随机游走的社团划分算法label progation 的python实现
- Python入门练习(一):基于全切分,一元语法模型的汉语分词
- python 基于XML生成静态网页的简单实现
- 基于python的分词算法的实现(1) - 算法
- 基于MySQL数据库的UTF8中文网站全文检索的实现
- 摘自迅雷视频网站基于CSS+HTML实现大气清新的蓝色导航
- 基于python的分词算法的实现(3) - 建立字典
- 基于模型设计的FPGA开发与实现:基本流程(一)之入门小例子(一):跑马灯