主題蠻抽象的,不過正是剛剛在開發網頁時新學到的
開發網頁的部分,我認為php還算是好上手的語法
因為當我的教授在操我網頁這塊時
也是先讓我摸了一陣子php
直到deadline前,才突然叫我改成django
接著,為了學django,我就花了很多很多的時間
因為我覺得其實還算挺複雜的
再加上很怕把伺服器寫壞
首先
開好了一個資料夾(website),在裡面灌好pip, django, python….等之後
用manage.py指令startproject(project)
websitemanage.py
project
settings.py
urls.py
wsgi.py
init.py
應該會長這個樣子
project裡面會有設定檔, url跟另外兩個還不知道做什麼的檔案
接下來就要開啟一個一個app
使用 python manage.py 指令 startapp
先開啟一個main 的 app
之後整個資料夾的樹會長這樣
websitemanage.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裡的網頁,讓網頁正常顯示唷!