zoukankan      html  css  js  c++  java
  • python完成留言板功能

    <!DOCTYPE html>
            <html lang="zh">
    <head>
        <meta charset="utf-8">
        <title>留言板</title>
        <link rel="stylesheet" href="main.css" type="text/css">
    </head>
    <body>
    <h1>留言板</h1>
    <form action="/post" method="post">
    <p>请留言</p>
        <table>
            <tr>
            <th>名字</th>
            <td>
            <input type="text" size="20" name="name">
            </td>
            </td>
            </tr>
            <tr>
                <th>留言</th>
                <td>
                    <textarea rows="5" cols="40" name="comment"></textarea>
                </td>
            </tr>
        </table>
        <p><button type="submit">提交</button></p>
        </form>
    <div class="entries-area">
        <h2>留言记录</h2>
        <h3>游客 的留言 (2017年11月2日21:45:05)</h3>
        <p>
            留言内容<br>
            留言内容
    
        </p>
    
    </div>
    
    </body>
    </html>
    body{
        margin: 0;
        padding: 0;
        color: #000E41;
        background-color: #004080;
    }
    h1{
        padding: 0 1em;
        color: #FFFFFF;
    }
    form{
        padding: 0.5em 2em;
        background-color: #78B8F8;
    }
    .main {
        padding: 0;
    }
    .entries-area{
        padding: 0.5em 2em;
        background-color: #FFFFFF;
    }
    .entries-area p{
        padding: 0.5em 1em;
        background-color: #DBDBFF;
    }
    留言板

    留言板

    请留言

    名字
    留言

    留言记录

    游客 的留言 (2017年11月2日21:45:05)

    留言内容

    # -*- 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 = 'D:codingpy2.7liuyanguestbook.dat'  # 数据库存储路径
    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)


    留言内容

  • 相关阅读:
    LoadRunner ---手动关联与预关联
    Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "124.202.213.70" failed: [10054] Connection reset by peer [MsgId: MERR-27780]
    LR录制https协议报证书错误,导航已阻止
    python sort和sorted的区别以及使用方法
    python 操作exls学习之路1-openpyxl库学习
    python json学习之路2-认识python种的json模块
    python json学习之路1-认识json格式数据
    磁盘性能测试学习之路2-测试磁盘性能工具的选择
    磁盘性能测试学习之路1-认识磁盘的各项参数
    飞机进度条
  • 原文地址:https://www.cnblogs.com/itor/p/7774788.html
Copyright © 2011-2022 走看看