我是靠谱客的博主 感动向日葵,最近开发中收集的这篇文章主要介绍python入门篇1:基于flask的留言板网站实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

声明:以下内容是本人大二在某公司实习时学习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值实现.

四.程序运行说明

首先,打开浏览器输入程序的地址,显示界面如下图:


点击输入留言信息,运行图片如下:


显示最新的留言信息如下:(最新留言名字加大显示)


五.程序清单(附有注释)

# -*- 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入门篇1:基于flask的留言板网站实现的全部内容,希望文章能够帮你解决python入门篇1:基于flask的留言板网站实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部