1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>留言板</title>
  6. <link rel="stylesheet" href="main.css" type="text/css">
  7. </head>
  8. <body>
  9. <h1>留言板</h1>
  10. <form action="/post" method="post">
  11. <p>请留言</p>
  12. <table>
  13. <tr>
  14. <th>名字</th>
  15. <td>
  16. <input type="text" size="20" name="name">
  17. </td>
  18. </td>
  19. </tr>
  20. <tr>
  21. <th>留言</th>
  22. <td>
  23. <textarea rows="5" cols="40" name="comment"></textarea>
  24. </td>
  25. </tr>
  26. </table>
  27. <p><button type="submit">提交</button></p>
  28. </form>
  29. <div class="entries-area">
  30. <h2>留言记录</h2>
  31. <h3>游客 的留言 (2017年11月2日21:45:05)</h3>
  32. <p>
  33. 留言内容<br>
  34. 留言内容
  35.  
  36. </p>
  37.  
  38. </div>
  39.  
  40. </body>
  41. </html>
  1. body{
  2. margin:;
  3. padding:;
  4. color: #000E41;
  5. background-color: #004080;
  6. }
  7. h1{
  8. padding: 0 1em;
  9. color: #FFFFFF;
  10. }
  11. form{
  12. padding: 0.5em 2em;
  13. background-color: #78B8F8;
  14. }
  15. .main {
  16. padding:;
  17. }
  18. .entries-area{
  19. padding: 0.5em 2em;
  20. background-color: #FFFFFF;
  21. }
  22. .entries-area p{
  23. padding: 0.5em 1em;
  24. background-color: #DBDBFF;
  25. }
  1. 留言板

留言板

请留言

名字
留言

提交

留言记录

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

留言内容

  1. # -*- coding: utf-8 -*-
  2. from __future__ import with_statement
  3. import sqlite3
  4. from flask import Flask, request, session, g, redirect, url_for, \
  5. abort, render_template, flash
  6. from contextlib import closing
  7.  
  8. # configuration
  9. DATABASE = 'D:\coding\py2.7\liuyan\guestbook.dat' # 数据库存储路径
  10. DEBUG = True
  11. SECRET_KEY = 'development key'
  12. USERNAME = 'admin'
  13. PASSWORD = 'default'
  14.  
  15. # create our little application :)
  16. app = Flask(__name__)
  17. app.config.from_object(__name__)
  18. app.config.from_envvar('FLASKR_SETTINGS', silent=True)
  19.  
  20. def connect_db(): # 快速连接到指定数据库的方法
  21. return sqlite3.connect(app.config['DATABASE'])
  22.  
  23. def init_db(): # 初始化数据库
  24. with closing(connect_db()) as db:
  25. with app.open_resource('schema.sql') as f:
  26. db.cursor().executescript(f.read())
  27. db.commit()
  28.  
  29. @app.before_request
  30. def before_request():
  31. g.db = connect_db()
  32.  
  33. @app.teardown_request
  34. def teardown_request(exception):
  35. g.db.close()
  36.  
  37. @app.route('/')
  38. def show_entries(): # 输出函数,会将条目作为字典传递给 show_entries.html 模板,并返回之后的渲染结果
  39. cur = g.db.execute('select name,email,text from entries order by id desc limit 10')
  40. entries = [dict(name=row[0], email=row[1], text=row[2]) for row in cur.fetchall()]
  41. return render_template('show_entries.html', entries=entries)
  42.  
  43. @app.route('/add', methods=['POST'])
  44. def add_entry(): # 用户添加新的留言信息函数,并只响应 POST 请求,表单显示在 show_entries
  45. if not session.get('logged_in'):
  46. abort(401)
  47. if len(request.form['text']) > 50 and len(request.form['text']) < 500: # 实现控制字数在50到500范围内
  48. g.db.execute('insert into entries (name,email,text) values (?,?,?)',
  49. [request.form['name'], request.form['email'], request.form['text']])
  50. g.db.commit()
  51. flash('New entry was successfully posted')
  52. else:
  53. flash('The input range must be between 50 and 500 characters ') # 如果留言信息不在范围内作出提示
  54. return redirect(url_for('show_entries'))
  55.  
  56. @app.route('/login', methods=['GET', 'POST'])
  57. def login(): # 登入函数
  58. error = None
  59. if request.method == 'POST':
  60. if request.form['username'] != app.config['USERNAME']:
  61. error = 'name error'
  62. elif request.form['password'] != app.config['PASSWORD']:
  63. error = 'password error'
  64. else:
  65. session['logged_in'] = True
  66. flash('log in')
  67. return redirect(url_for('show_entries'))
  68. return render_template('login.html', error=error)
  69.  
  70. @app.route('/logout')
  71. def logout(): # 退出登录函数
  72. session.pop('logged_in', None)
  73. flash('log out')
  74. return redirect(url_for('show_entries'))
  75.  
  76. if __name__ == '__main__':
  77. init_db()
  78. app.run(debug=True)

留言内容

python完成留言板功能的更多相关文章

  1. jsp中运用application实现共享留言板功能

    jsp中application的知识点总结: 1.一个Web应用程序启动后,将会自动创建一个application对象,在整个应用程序的运行过程中只有这一个application对象,即所有访问该网站 ...

  2. Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql

    在上一篇博客中介绍怎样在SAE平台搭建一个html5的电子请帖网站,收到很多反馈,也有很多人送上婚礼的祝福,十分感谢! web开发从零学起,记录自己学习过程,各种前端大神们可以绕道不要围观啦 大婚将至 ...

  3. 利用反馈字段给帝国cms添加留言板功能(图文教程)

    帝国cms的插件中提供信息反馈字段,很多人却不会用.这里谢寒教大家如何来给自己的帝国cms网站添加留言板功能 1.找到添加地址 2.添加字段 3.你可以在字段中添加多种字段类型(有文本域,单行文本框, ...

  4. php实现留言板功能

    这个小小的留言板功能适合班级内或者公司内部之间的讨论,对话和留言,非常的方便,更重要的是无需网络,对于公司管理层来说是非常乐于常见的, 下面是这个留言板的写法: 1 首先是登录页面: <form ...

  5. 使用PHP连接数据库实现留言板功能

    PHP实现留言板功能: 1 首先是登录页面: <!DOCTYPE html><html>    <head>        <meta charset=&qu ...

  6. JS原生编写实现留言板功能

    实现这个留言板功能比较简单,所以先上效果图: 实现用户留言内容,留言具体时间. <script> window.onload = function(){ var oMessageBox = ...

  7. 原生JS实现简单留言板功能

    原生JS实现简单留言板功能,实现技术:css flex,原生JS. 因为主要是为了练手js,所以其中布局上的一些细节并未做处理. <!DOCTYPE html> <html lang ...

  8. 用php(session)实现留言板功能----2017-05-09

    要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示 ...

  9. Django web框架开发基础-django实现留言板功能

    1.创建项目 cmd  django-admin startpoject cloudms 2.创建APP cmd django-admin startapp msgapp 3.修改settings,T ...

随机推荐

  1. gdb几个操作

    如果进程转为守护进程,可设置如下跟进子进程 set follow-fork-mode child 输出变量/函数/返回值有print, call, display,自行选择 对于打印value has ...

  2. Windows平台下源码分析工具

    最近这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,准备写一份文档记录下这些代码的用处.处理过程.理论公式来源.注意事项,自己还没有弄明白的地方.目前的想法是把每一个 ...

  3. 自定义扩展Compare比较方法

    public static int Compare<T, V>(this T x, T y, Func<T, V> func) { return Comparer<V&g ...

  4. js | JavaScript中数据类型转换总结

    转载 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); ...

  5. opendaylight安装

    OpenDaylight安装 环境 jdk-1.8 maven 环境配置安装 Java环境 查看Java环境 java  -version 安装jdk-1.8 yum install java-1.8 ...

  6. JavaScript - 库 jQuery

    测试 JavaScript 框架库 - jQuery 引用JQuery 如需测试JavaScript库,您需要在网页中引用它. 为了引用某个库,请使用<script>标签,其src属性设置 ...

  7. 课时68.id选择器(掌握)

    1.什么是id选择器? 作用:根据指定的id名称找到对应的标签,然后设置属性 格式: #id名称{ 属性:值; } 注意点: 1.每个html标签都有一个属性叫做id,也就是说每个标签都可以设置id ...

  8. python3.X中pickle类的用法(cPickle模块移除了)

    1.python3.x中移除了cPickle模块,可以使用pickle模块代替.最终我们将会有一个透明高效的模块. 2.因为存储的是对象,必须使用二进制形式写进文件 #!/usr/bin/python ...

  9. 查找并绘制轮廓 opencv

    findContours(): 第二个参数为一个检测到的轮廓,函数调用后的运算结果都放在这里,每个轮廓存储为1个点向量,用point类型的vector表示. 第三个参数表示轮廓数量,包含了许多元素.每 ...

  10. acm总结

    注意事项: 不要轻易中途变换思路修改代码 发现有样例无法通过可以用if强行通过 注意输入输出形式(long long为lld,无符号为llu). 开过1亿的int型数组 Long long能读入输出1 ...