极简网页日记使用说明

  • 开发系统:OS X 10.10
  • python版本:2.7.10
  • 框架: flask
  • 服务器:pythonanywhere

网址:http://cxiaodian.pythonanywhere.com/

任务完成的晚了,但还是要检查完成。

  • 服务器没用要新浪,理由不想后面实名认证
  • 用得是flask框架,理由是后续想用flask框架做个website,其实跟bottle差不多,就是flask教程多。
  • 用zoe 推荐的服务器,pythonanywhere,很好用,后台还有终端。
  • 这个代码差不多就把4w作业搬过来放上服务器。
  • 因为没有kvdb数据库,用得是Sqlite3数据库。

本地部署

用pyenv 环境,cd进入5w作业文件夹

pyenv install 2.7.10
pyenv local 2.7.10

安装flask:

pip install Flask

创建数据库:

大致看了下教程 Using SQLite 3 with Flask 这样的就是一个链接数据库的函数,跟保存关闭数据库的函数。

先本地建一个数据库跟表,参考Databases 进入python终端,建一个db文件,跟一个存放数据。

import sqlite3
conn = sqlite3.connect("mydiary.db")
cursor.execute("CREATE TABLE diary_data (Id integer PRIMARY KEY,Time text, Content,);")

导入sqlite3,建一个mydiary.db数据文件,和一个带有diary_data表,

链接数据库的函数:

@app.before_request
def before_request():
    g.db = sqlite3.connect("mydiary.db")


@app.teardown_request
 def teardown_request(exception):
        if hasattr(g, 'db'):
       g.db.close()

根据官网的例子 HTTP Methods 就可以马上运行起来了,再根据例子修改下。

建一个html文件,我跟直接拿A beginner's guide to building a simple database-backed Flask website on PythonAnywhere 这个文章里面的html代码,还有其他同学的代码修改的

建一个读取数据库的函数

def read_data():
     diary_data = []
     g.db.row_factory = sqlite3.Row
     cur = g.db.cursor()
     cur.execute("SELECT * FROM diary_data")
     get_fetch = cur.fetchall() # Fetches all (remaining) rows of a query result
    for row in reversed(get_fetch):
        diary_data.append('%s  %s' % (row['Time'], row['Content']))
    return diary_data

再建一个写入数据库的函数

 def write_data(content,tags):
    t = str(datetime.now())[:20]
     g.db.execute("INSERT INTO diary_data(Time, Content, Tags) VALUES(?,?,?)", (t,#
     g.db.commit()

@app.route('/', methods=["GET", "POST"]) def inputr_data():

if request.method == "GET":
   return render_template('main_page.html', diary_data=read_data(), row_coun#

 content = request.form['content']
 tags = request.form['tags']

 write_data(content,tags)
 return redirect('/')

添加显示到网站

<div class=content>
<em class=data> {{ content }}</em><br>
</div>
 {% endfor %} 

这个过程在链接数据库这块消耗比较长的时间,因为第一次接触,要搜索找一些资料

添加统计表里有多少行,用来统计一个有多少条日记,再这里找到答案cursor.rowcount always -1 in sqlite3 in python3k

def note_count():
    cursor  = g.db.execute("select * from diary_data")
    row_count = len(cursor.fetchall())
    return row_count

添加显示到网站

     <h4>本站共有{{row_count}}条笔记</h4>

我试着给叫标签,能显示,但就是还没想出来如何比较跟标签分开。