🔖 Day1 - 由零開始架置Django

2018 - 06 - 26
🔖 Day1 - 由零開始架置Django
花了一個月的時間去學Python + NumPy + Pandas, 終於移師到Django! 記錄一下每天的進度+筆記。
1. [Install pipenv] 先安裝一個運行virtual environment的package- pipenv,再安裝Django
$python -m pip install pipenv
$pipenv install Django

由於每個 Project 的程式、版本、配置也可能各有不同,所以最好用 VirutalEnvironment 運行。
2. [Create Django Project] 在 Terminal 使用cd進入你所想的folder以建立project,輸入command建立project:
$django-admin.py startproject <project_name>
新project會被建立在Users/<username>/<project_name>這個新folder。
3. [Open your project using IDE] 使用 Drag & Drop 將 project top folder 加至 Sublime Text3 的side bar。
4. [Runserver] 利用 Terminal 啟動 Django project 。
$cd <project_name>
$python manage.py runserver


5. [Create an app to the project] 新增app至project: $python manage.py startapp <app_name> #新增子 folder <app_name> 在 project 裡面 打開project/settings.py加入新app:
INSTALLED_APPS = [
...
...
    "<app_name>",
]

7. [Setup url] 因為每當到某一網址時,Django都會利用 <project_name>/urls.py 發出request找相對應的views。 到<project_name>/urls.py
from <app_name>.views import app_index
from django.urls import path

urlspattern = [
    ...
    path('index/', app_index, name='app_index'),
]

這樣在browser打開url ../index/時,Django就會跳到<app_name>.views.app_index這個function。
8. [Create a view function] Define <app_name>.views.app_index: 到<app_name>/views.py
from django.shortcuts import render

def app_index(request):
    render(request, "app_index.html", {<dictionary of any elements to be passed to app_index.html>}) 

#dict 例如{time: datetime.now()}
9. [Define templates path] 利用terminal 新增directory templates,以作架置render blog link 的HTML用。 在project目錄下: mkdir templates 設定 templates folder 的路徑: <project_name>/settings.py
TEMPLATES -  'DIRS': [os.path.join(BASE_DIR, 'templates').replace('\\', '/')]

然後可以在 SublimeText3 內安心編寫HTML #注意,所有elements在HTML內要用 雙括弧 {{ elements }},才可以回傳至render的dictionary。
10. [Choosing database] Django 預設了幾種 database 制式:SQlite3, MySQL, PostgreSQL,這裡使用SQLite3。 或可以在project/settings.py - DATABASE 內更換:
MySQL: django.db.backends.mysql
SQLite 3: django.db.backends.sqlite3
PostgreSQL: django.db.backends.postgresql_psycopg2


11. [Create a new model to database] 假設app需要用到名為Post的Database,我們需要加入新class - Post: <app_name>/models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField
    photo = models.URLField(blank=True)
    time = DataTimeField(auto_now_add=True) 

每當models有修改時,都要makemigrations & migrate:
$python manage.py makemigrations
$python manage.py migrate


12. [Create Superuser and setup Admin session] Admin 是 Django 預設的 INSTALLED APPS 之一,可以在settings內找到。 利用新增admin或superuser:
$python manage.py createsuperuser
然後輸入以下的資料: Username (leave blank to use 'YOUR_NAME'): Email address: your_name@yourmail.com Password: Password (again): Superuser created successfully. 大功告成 告訴 Django,blog的models (即Post) 需要被 admin 管理: 到<app_name>/admin.py
from django.contrib import admin

admin.site.register(Post)

登登!可以到 http://127.0.0.1:8000/admin 管理了。 -->To Be Continued

Comments

There is no comment yet

New Comment

Please Login to comment