データベースに接続してjinja2テンプレートでリスト表示するところまで。
-
pip install pymongo
でpymongoを入れて後は任せる。 - pythonのリストと辞書をちゃんと勉強すること。
- objectIDがあるのでjsonで困る問題はググるとみんなそうらしい、BSONで
from bson.json_util import dumps, loads
するのはやってみた。 - とりあえず{name:"name"}というデータの"name"をjinja2でforループ表示するのに、この方法で試した。
- herokuにデプロイするときにはデータベースのパスとか変えるはずなので(参考)、またあとでやってみる。
app.py
rom bottle import run, get, post, request
from bottle import TEMPLATE_PATH, jinja2_template as template
import pymongo
import bottle
@app.route('/', method=['GET' ,'POST'])
def index():
if request.method=='POST':
name = request.forms.get("name")
conn=pymongo.Connection()
db=conn.mydb
db.mycol
db.mycol.save({"name":name})
result = db.mycol.find()
viewmodel=[]
for row in result:
l = dict()
for column in row:
l[str(column)]=row[column]
viewmodel.append(l)
return template('form.html', mylist = viewmodel)
elif request.method =="GET":
conn=pymongo.Connection()
db=conn.mydb
db.mycol
result = db.mycol.find()
viewmodel=[]
for row in result:
l = dict()
for column in row:
l[str(column)]=row[column]
viewmodel.append(l)
return template('form.html', mylist = viewmodel)
form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form method="post" action="/">
<p>name: <input "form-control" type="text" name="name" size="50"></p>
<p><input type="submit" value="OK"></p>
</form>
{{name}}
<br>
<ul>
{% for item in mylist %}
<li>{{item}}</li>
{% endfor %}
</ul>
<br>
<ul>
{% for item in mylist %}
<li>{{item.name}}</li>
{% endfor %}
</ul>
</body>
</html>