在Django中打什麼網址會去什麼地方不是依靠資料夾的位置會構造決定
他的基本構造再第一步中講過了
第一層資料夾 TestProject => 專案
第二層資料夾 apps => 此專案的應用程式儲存區
第三層資料夾 ShowWeb => 此專案的一個子系統
第四層資料夾 templates => 樣版區
第五層資料夾 ShowWeb => 裡面放真正的樣板
既然這樣,那他如何決定給使用者看到什麼呢?
請看以下說明:
打開TestProject中的urls.py
設定如下
#-*- coding: utf8 -*-
from django.conf.urls.defaults import *
from django.conf import settings
urlpatterns = patterns('',
#^是開始 $是結束
(r'^$', 'apps.ShowWeb.views.index'),
#再這一段開始後馬上結束(^$)表示網址後面什麼都不打的話,就會去執行apps/ShowWeb/views.py 裡面的index這個程式
(r'^person/$', 'apps. ShowWeb.views.person'),
#再這一段開始後接person,就會去執行apps/ShowWeb/views.py 裡面的person這個程式
再這一步我們得到下面的結果
如果我的網站網址是:http://127.0.0.1:8000/
我只打
http://127.0.0.1:8000/
就會去執行apps/ShowWeb/views.py 裡的index這個funtion
http://127.0.0.1:8000/person/
就會去執行apps/ShowWeb/views.py 裡的person這個funtion
進階修改:
看完以上的說明後會不會發現一件事情
如果網站只有一個子系統,這樣當然簡單乾淨
但是…如果我有十個子系統,每個子系統都有10個以上網址設定
那這個urls.py應該會變成怪物
亂七八糟,啥都寫在這裡,好幾百行網址設定,眼睛都開花了
所以我們就很聰明的幹了一件事情
我們在TestProject中的urls.py這樣寫
#-*- coding: utf8 -*-
from django.conf.urls.defaults import *
from django.conf import settings
urlpatterns = patterns('',
(r'^', include('apps.ShowWeb.urls')),
(r'^AAA', include('apps.AAA.urls'))
(r'^BBB', include('apps.BBB.urls'))
)
意思是
如果是網址後面啥都沒有就去看ShowWeb這個子系統內的urls.py
如果是網址後面接AAA就去看AAA這個子系統內的urls.py
如果是網址後面接BBB就去看BBB這個子系統內的urls.py
然後我們在ShowWeb中再自己新增一個檔案urls.py
內容寫
#-*- coding:utf8 -*-
from django.conf.urls.defaults import *
urlpatterns = patterns('apps.ShowWeb.views',
(r'^$', 'index'),
(r'^friend_connect/$', 'friend_connect'),
(r'^connect/$', 'connect'),
(r'^saysome/$', 'saysome'),
)
這邊就可以專門為了這個子系統來寫他專屬的網址對應了
所以個別的子系統各別自己寫自己的網址對應設定
較為乾淨也不會太過雜亂
Django製作網站-第一章 安裝Django
Django製作網站-第二章 設定MYSQL資料庫
---------------------------------------
Django製作網站-第四章 設定網頁頁面及執行的程式
Django製作網站-第五章 在網頁上面顯示變數
Django製作網站-第六章 把Django交給Apache去跑
留言列表