VIẾT MỘT ỨNG DỤNG DÙNG FRAMEWORK FLASK VỚI DATABASE LÀ MONGO.


Trong bài viết này bạn học được cách tạo một ứng dụng sử dụng framework flask với cơ sở dữ liệu là mongodb.

Các phần mềm cần thiết :

  • docker (1.6.0 or above)
  • docker-compose (1.3.1+)
  • python 2.7 or above
  • Linux VM - (We used ubuntu 14.04 64 bit)

Cấu trúc của một flask app như sau:

├── app.py
├── docker-compose.yml
├── Dockerfile
├── README.md
├── requirements.txt
└── templates
    └── todo.html

Tạo một thư mực cha:

Tạo một thư mục cha có tên : flask_mongo_compose_sample

$ mkdir flask_compose_sample
$ cd flask_compose_sample

Tạo một file app.py có nội dung sau :

import os
from flask import Flask, redirect, url_for, request, render_template
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient(
    os.environ['DB_PORT_27017_TCP_ADDR'],
    27017)
db = client.tododb


@app.route('/')
def todo():

    _items = db.tododb.find()
    items = [item for item in _items]

    return render_template('todo.html', items=items)


@app.route('/new', methods=['POST'])
def new():

    item_doc = {
        'name': request.form['name'],
        'description': request.form['description']
    }
    db.tododb.insert_one(item_doc)

    return redirect(url_for('todo'))

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True)


Tạo một template file:

File todo.html có nội dung sau và nó dùng ninia template để render, file này nằm ở trong folder template :

<form action="/new" method="POST">
  <input type="text" name="name"></input>
  <input type="text" name="description"></input>
  <input type="submit"></input>
</form>

{% for item in items %}
  <h1> {{ item.name }} </h1>
  <p> {{ item.description }} <p>
{% endfor %}


Tạo file requrements.txt có nôi dung sau;

requirements.txt

Có 2 module cần cài :

flask
pymongo

Tạo một dockerfile :


FROM python:2.7
ADD . /todo
WORKDIR /todo
RUN pip install -r requirements.txt


Tạo một docker-compose.yml trong thư mục cha,
web:
  build: .
  command: python -u app.py
  ports:
    - "5000:5000"
  volumes:
    - .:/todo
  links:
    - db
db:
  image: mongo:3.0.2

Sau đó ta có thể chạy ứng dụng được rồi.

$ docker-compose build
$ docker-compose up

Bây giờ bạn có thể truy cập http://localhost:5000 trên trình duyệt của bạn và thấy nội dung được in ra. 




 

Nhận xét

Bài đăng phổ biến từ blog này

Trang web medium.com chết, vì sao ?

Cách sử dụng sys.argv trong python.

Thiết kế một RESTful API bằng python và flask.