Thursday, June 7, 2012

Django -- create a new app - part2

part1是一些有關models建立以及如何和系統互動
這邊先來記錄一下如何顯示

首先先修改settings.py中的 TEMPLATE_DIRS
cd //var/www/mutarock/mutarock/
vim settings.py
TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(os.path.dirname(__file__), '..', 'templates').replace('\\','/'),
)
這個設定主要是告訴django你的模板放在哪裡,我這邊用的是相對路徑
方便將來移植,如果覺得完全不會動到就用絕對路徑也是可以的啦

回到前一層去新增templates資料夾
cd ..
mkdir templates
cd templates/
mkdir polls
我希望每個apps的模板放的地方不一樣,所以多新增一個子資料夾polls
到目前為止準備工作已經差不多了,接下來還有3個部分
  • 設定 urls.py
  • 編輯 /apps/polls/views.py
  • 編輯顯示用的 html

下面先來處理urls.py
這部分有很多不同的做法,你可以把全部的urls路徑都放到主資料夾下面的urls.py
也可以用導向的方式,在每個apps裡面都有自己的urls.py
教學上面的例子,下面兩個做法等價,挑自己喜歡的風格

例子一:
全都放在 //var/www/mutarock/mutarock/urls.py
from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^polls/$', 'polls.views.index'),
    url(r'^polls/(?P\d+)/$', 'polls.views.detail'),
    url(r'^polls/(?P\d+)/results/$', 'polls.views.results'),
    url(r'^polls/(?P\d+)/vote/$', 'polls.views.vote'),
    url(r'^admin/', include(admin.site.urls)),
)


例子二
主資料夾負責導向
//var/www/mutarock/mutarock/urls.py
from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^polls/', include('apps.polls.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

apps的資料夾負責細節
//var/www/mutarock/apps/polls/urls.py (預設是沒有這個檔案,要自己新增)
from django.conf.urls import patterns, include, url

urlpatterns = patterns('apps.polls.views',
    url(r'^$', 'index'),
    url(r'^(?P\d+)/$', 'detail'),
    url(r'^(?P\d+)/results/$', 'results'),
    url(r'^(?P\d+)/vote/$', 'vote'),
)
之後再browser上面輸入 http://127.0.0.1/polls 系統就會知道要導向到polls的urls.py

  • 後面什麼都不接,會去找polls裡面view.py的index 
  • 後面接polls的id,找deatils
  • 以此類推


urls.py比較基本的概念就是這些,個人比較偏好第2種做法
主資料夾的urls.py看起來會比較整齊
不然開了幾十個apps不就可能會有幾百行在裡面


No comments: