极简网页日记使用说明
- 开发系统: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>
我试着给叫标签,能显示,但就是还没想出来如何比较跟标签分开。