mongoDB + flask 存储前端 post 请求的数据

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>

猜你喜欢

转载自blog.csdn.net/chenxin0215/article/details/84138281