python file:
from flask import Flask,render_template,url_for, request, redirect
from logging import DEBUG
from datetime import datetime
import json
from flask_pymongo import PyMongo
#链接 pymongo
# 保证 系统的MongoDB service 是启动状态
app = Flask(__name__)
app.config.update(
MONGO_URI='mongodb://localhost:27017/flask',
MONGO_PORT=27017
)
# new 一个新对象
ProjMongo = PyMongo(app)
def addPersonToMongo(name,age, jt):
p = {
'name': name,
'age': age,
'jobTitle':jt,
'RegiterDate': datetime.utcnow()
}
# add the records to mongo
ProjMongo.db.projCollection.insert_one(p)
# ALL the variables should be defined above the app
@app.route('/index')
@app.route('/')
def index():
return render_template('mytest.html')
@app.route('/thankyou')
def thankyou():
return render_template("Thanks.html")
# test the request with post or get mode
@app.route('/getbookmark', methods=['GET','POST']) # which need the method assigned in form tag in html
def getbookmark():
print(request.args)
if request.method == "POST":
# POST方式 获取到数据后, 分别取值,之前试过直接转换为Json 但总是提示decode 的问题,不能一次将所有的数据拿到
# 所以,分别将单次的值传入addPersonToMongo函数 , 重新组合一个 dict add到mongo里
# 这里应该还有更好的 简便方式,
name = request.form.get('name')
age = request.form.get('age')
jt = request.form.get('jobTitle')
addPersonToMongo(name,age,jt)
return redirect(url_for('thankyou'))
return render_template('addbookMark.html')
@app.route('/showDataBase')
def showDataBase():
showDataFromMongo = ProjMongo.db.projCollection.find({})
return render_template('showDataBase.html', result = showDataFromMongo)
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
@app.errorhandler(500)
def server_error(e):
return render_template('500.html'), 500
if __name__ =="__main__":
app.run(debug=True)
对应template 如下:
1) addbookMark.html
<div>
<form action="http://127.0.0.1:5000/getbookmark" method='post'>
<p>
enter name:
<input type="text" name = "name" ><br>
<p></p>
enter age:
<input type="text" name = "age" ><br>
<p></p>
enter job title:
<input type="text" name = "jobTitle" ><br>
</p>
<p>
<button type = "submit"> submit </button>
</p>
</form>
</div>
2) showDataBase.html
<div>
<table border =1 >
<tr>
{% for item in result[0].keys() %}
<th> {{item}}</th>
{% endfor%}
</tr>
{% for itemPer in result %}
<tr>
{% for item in itemPer.values() %}
<td> {{item}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</div>
<a href="{{url_for('index')}}">back to main page </a>