主題蠻抽象的,不過正是剛剛在開發網頁時新學到的
開發網頁的部分,我認為 php 還算是好上手的語法
因為當我的教授在操我網頁這塊時
也是先讓我摸了一陣子 php
直到 deadline 前,才突然叫我改成 django
接著,為了學 django,我就花了很多很多的時間
因為我覺得其實還算挺複雜的
再加上很怕把伺服器寫壞
首先
開好了一個資料夾(website),在裡面灌好 pip, django, python....等之後
用 manage.py 指令 startproject(project)
manage.py
project
settings.py
urls.py
wsgi.py
init.py
應該會長這個樣子
project 裡面會有設定檔, url 跟另外兩個還不知道做什麼的檔案
接下來就要開啟一個一個 app
使用 python manage.py 指令 startapp
先開啟一個 main 的 app
之後整個資料夾的樹會長這樣
manage.py
project
settings.py
urls.py
wsgi.py
init.py
main
view.py
model.py
(應該還有其他的)
template
至於專門放 html 的 template
會跟 main 還有 project 同一層
url.py 跟 settings.py 只會有各一個
但是不同的 app 有不同的 view 和 model
每開一個 app 就需去 settings.py 裡寫上新開的 app
像是這樣
而 Django 的工作流程,我把他解釋為
url >> view >> model >> template
不過這篇還不會介紹到 model
打開 url.py
通常會在這邊寫出一行一行網頁....
就是 url 網址後面那串(好不專業)
舉一個例子,會看到一行一行像下面這樣的程式碼
假設這個主網域的網址叫做 www.wordpress.com
那麼這行指令就是當你在網址上打
www.wordpress.com/data_course823/
會跳出另外一個頁面
程式碼的意思就是當你輸入
www.wordpress.com/data_course823/
他會執行後面亮綠色 data_course823 的動作
而這個動作我們會寫在 views.py
打開 views.py
這裡寫的就是一個一個在 url 輸入的動作
def 定義 data_course823
回傳 data_course823.html
這樣的動作,是沒有牽涉到 model
不要忘了 import 指令唷!
其實 url.py
一個 project 只會有一個
所以不管是哪個 app 的動作或者網址
都是寫在同樣一個 url.py
萬一有好幾個不同的 app 的話
就需要在 url.py 裡
利用註解跟空行將寫上去的 url 程式碼做一些整理,看起來才不會亂
無論是寫在哪個 app,url 的寫法都是一樣的
url(r'^admin/', include(admin.site.urls)), url(r'^$', index), url(r'^firstweb/', firstweb), url(r'^second/', second), url(r'^third/', third),
通常會將網址和後面的動作取一樣的,以免搞混
接著只要在 url.py 上方 import 不同 app 的 views 就可以了
這樣不管是在哪個 app 寫好 views, 都能正確的回應 url.py 呼叫的動作囉!
url.py from main.views import _ from test.views import _
url(r'^$', index), url(r'^firstweb/', firstweb), url(r'^second/', second), url(r'^third/', third),
main.views
from django.shortcuts import render_to_response from main.models import *
def index(request): return render_to_response('index.html')
def firstweb(request): return render_to_response('firstweb.html')
test.views
from django.shortcuts import render_to_response from test.models import *
def second(request): return render_to_response('second.html')
def third(request): return render_to_response('third.html')
template 裡要有
index.html
firstweb.html
second.html
third.html
對應的 html 喲!
這樣 views 裡面的動作才能對應 url.py 下的指令
views 的動作才能傳給 template 裡的網頁,讓網頁正常顯示唷!