LoginSignup
3
3

More than 5 years have passed since last update.

heroku+bottleで使ってみたいのでmongoDBを試してみる。

Posted at

データベースに接続して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>

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3