Start Django with Mongodb

django 8 ธ.ค. 2021

เริ่มจากสร้าง Env ใน conda ด้วย

conda create -n django python=3.9

จากนั้นให้ activate env ที่เราสร้าวขึ้นมาใหม่

conda activate django

ขั้นตอนต่อไปให้ติดตั้ง Django เข้าไปใน env ด้วยคำสั่ง

pip install Django

# ทดสอบ django และเช็ค version
python -m django --version

เมื่อติกตั้ง Django เรียบร้อยแล้ว เราจะยังไม่มีส่วน code project ที่เราจะใช้งาน ต่อไปเราจะสร้าง project ด้วยคำสั่ง

django-admin startproject webproj

หรือในกรณีที่มี directory ปลายทางอยู่แล้ว

# mkdir www & cd www
django-admin startproject webproj .

หลังจาก สร้าง project ใหม่ดเสร็จแล้วเราจะได้ ภาพรวมใน directory ประมาณนี้

เพื่อให้แน่ใจว่า project ของเราทำงานได้ เราสามารถทดลอง start local server ด้วยคำสั่ง

*start local server*
python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
December 08, 2021 - 13:11:47
Django version 4.0, using settings 'vets.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

เมื่อ start server แล้วเราสามารถเข้าไปทดลองใช้งานที่ http://127.0.0.1:8000/

การ Connect Django และ MongoDB โดยใช้ PyMongo

เริ่มต้นให้ติดตั้ง package ตามนี้

pip install pymongo[snappy,gssapi,srv,tls]
pip install dnspython
pip install mongoengine
pip install djongo

เมื่อติดตั้งเรียบร้อยแล้ว ต่อไปจะเป็นการไป config database ใน project/settings.py ส่วนนี้ให้หาตัวแปล DATABASES แก้ข้อมูลตามนี้

DATABASES = {
        'default': {
            'ENGINE': 'djongo',
            'NAME': 'your-db-name',
            'ENFORCE_SCHEMA': False,
            'CLIENT': {
                'host': 'mongodb+srv://<username>:<password>@<atlas cluster>/<myFirstDatabase>?retryWrites=true&w=majority'
            }  
        }
}

เมื่อแก้ไข settings.py เรียบร้อยแล้ว เราสามารถ migrate data ใน database ตามที่เรากำหนดได้ด้วยคำสั่ง

# Django magration data to database
python manage.py migrate

แค่นี้ จบดื้อๆ

ref: https://www.mongodb.com/compatibility/mongodb-and-django

แท็ก

Onyx

Just a middle-aged programmer, Can do many things but not the most.