花了一個月的時間去學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