[Python] Django Project : 01 Setting up

Django คืออะไร ?

Django คือ open source web framework ตัวหนึ่งที่

1. ฟรี

2. เขียนด้วย Python

framework คืออะไร?

framework คือตัวช่วยในการสร้าง websites ที่ทำให้งานเราง่ายขึ้นและสะดวกขึ้น ตัวอย่างเข่น ระบบ authentication ( sign up, sign in, บลาๆ ), การจัดการ form บน website หรือแม้การโหลดไฟล์ก็ตาม

ทำให้ปัญหาเดิมๆที่เราต้องเผชิญเวลาสร้าง websites ใหม่ๆมีน้อยลงด้วยการใช้ของสำเร็จที่ django เขาสร้างมาเรียบร้อยแล้ว

Installation

  1. install python

install Homebrew  ลง package manager ก่อนเลย เพื่อลง Setuptools และ pip ให้เรา

$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)

และลง python3

$ brew install python3

2. install virtualenv

สร้าง virtual environment สำหรับ project เรา

$ mkdir django_project

$ cd django_project

$ virtualenv venv 

(http://docs.python-guide.org/en/latest/dev/virtualenvs/)

คำสั่งนี้ virtualenv venv จะ สร้าง folder ใน current directory

และเราจะเลือกใช้ Python3 ในนี้  ด้วยคำสั่ง

virtualenv -p python3 venv

3. install Django

คราวนี้เมื่อเราได้ virtualenv สร้าง environment เรียบร้อยแล้ว เราก็มาลง Djangoกันได้เลย

แต่แน่นอน ก่อนอื่นต้องมั่นใจว่าเราได้ pip เวอร์ชั่นล่าสุดก่อน

$pip install –upgrade pip

$ pip install django

ถ้า django ถูกลงแล้ว จะต้องเห็น version

$ python -m django –version

เริ่มโปรเจคกัน

อย่าลืมว่าเราต้องรันทุกอย่างของโปรเจคนี้ใน virtualenv จึงต้อง activate กันก่อน

เข้าไปใน directory ที่แล้วต้องการแล้ว

source myvenv/bin/activate

ต่อด้วย

(venv)   django_project$  django-admin startproject mysite .

คำสั่งนี้จะ auto-generate โค้ดเพื่อสร้าง Django Project ให้แก่เรา

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

# ต้องใช้ . ด้วย เพื่อบอก script ว่า install django ใน current directory นะ และทำให้ไฟล์ manage.py ก็จะมาอยู่ใน directory นี้ ซึ่งเป็นตัวสำคัญที่ต่อไปจะเป็นตัว start server ให้

# django-admin.py คือสคริปต์ที่จะสร้าง directory แล้ว file ให้เรา

# settings.py คือ configuration ของ website

แก้ Configuration เรื่อง Time zone กันก่อน

# เข้า mysite/settings.py ไป set เวลา timezone เซตที่ TIME_ZONE = ‘Asia/Bangkok

# ตรง debug = True

ALLOW_HOSTED = [’127.0.0.1’]

ตัว allowed_hosts เหมือนเป็นการระบุ whitelist ของ domain ว่า site ไหนปลอดภัยแก่การ respond ซึ่งตัว Django นั้นเองเป็นคนสร้าง security ตัวนี้เพื่อป้องกันปัญหาเรื่อง Phishing attack นั่นเอง

Phishing ออกเสียงเหมือน Fishing เป็นการตกเบ็ด นั่งรอเฉยๆเพื่อให้เหยื่อเข้ามาหาเอง อย่างเช่น การที่สร้าง websites ปลอม หน้าตาดูเชื่อถือ เพื่อให้เราเชื่อแล้วกรอกข้อมูลส่วนตัว คนรอเบ็ดก็วินไปได้ข้อมูลเราไปใช้ทำมิดีมิร้ายด้าย

(https://www.djangoproject.com/weblog/2013/feb/19/security/)

เซต database 

เข้ามาใน mysite/settings.py

เราเลือกใช้ SQLite เพราะเป็น default ของ python อยู่แล้ว ไม่ต้องทำอะไรเพิ่ม แต่ถ้าอยากได้ database ที่ scalable กว่าก็เลือก PostgreSQL ไปนะแจ๊ะ

DATABASES = {

    ‘default’: {

        ‘ENGINE’: ‘django.db.backends.sqlite3’,  // ไม่ก็ ‘django.db.backends.postgresql’

        ‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’), // ถ้าใช้ sqlite3 ตัว database จะสร้างไฟล์ลงในเครื่องของเราให้เลย

    }

}

ถ้าใช้นอกเหนือ SQLite ล่ะก็ ต้องรันคำสั่ง “CREATE DATABASE database_name;” ด้วยนะ

Migrate 

ในส่วนต้นๆของไฟล์ ที่ INSTALLED_APPS จะมีชื่อของ Django Applications ต่างๆมาเป็น default ให้อยู่ละ

พวก apps เหล่านี้จะต้องใช้ database เราจึงต้อง create database ขึ้นมาถึงจะใช้ apps เหล่านี้ได้

$ python manage.py migrate

( ต้องอยู่ที่ๆมี manage.py นะแจ๊ะ)

คำสั่งนี้จะ create และ update database ไปในตัว

Start web server

มาดูหน่อยซิว่า work ไหม

(venv)   django_project$ python manage.py runserver

เปิดเข้าไปใน http://127.0.0.1:8000/ แล้วก็จะพบกับ

screen-shot-2559-12-23-at-4-30-24-pm

happy-crying-face-meme-11

เย้

One thought on “[Python] Django Project : 01 Setting up

  1. Pingback: [Python] Django Project: 02 Get image via API | mesodiar

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.