之前生成了Product類的scaffold,但是如同rails的開發者David所講的那樣,scaffold幾乎沒什么用。所以按照《Agile Web Development with Rails 4th》中的迭代計划,下一步的修改是美化list頁面:
但是這個界面還是太丑陋了。其實,有了bootstrap后,很多站點都變成了“又黑又硬”的工具條+“小清新”風格。我們即不能免俗,又懶得自已設計風格,不妨用bootstrap將產品清單界面重新設計成如下的風格:
下面讓我們來實現這個界面。顯然web界面會使用一些靜態資源(css,js,image等),
要在Django中引入靜態資源)。Django在正式部署的時候對於靜態資源有特殊的處理,在開發階段,可以有簡單的方式讓靜態資源起作用。
首選在project目錄下面創建一個static目錄,並將靜態資源按合理的組織方式放入其中:
static/
css/
bootstrap.min.css
js/
images/
productlist.html
其中productlist.html是請界面設計師實現的產品清單靜態頁面;css/bootstrap.min.css 是該頁面使用的樣式表,來自bootstrap,將來整個系統都將使用這一套樣式風格;js目錄現在為空,以后可以將javascript代碼放在這里;images文件夾同理。
我們可以看到,Django對於靜態內容的管理非常符合管理。相比之下,rails要求你將靜態內容放到很怪異的結構中:
app/assets/
images/
javascripts/
stylesheets/
界面設計師實現的界面要想運行起來,還需要修改相關的路徑,或者改變自己的目錄設置習慣。這種設計讓人難以理解。
回到Django,讓靜態資源起作用只需要簡單的配置(下面的做法只適用於開發階段):
修改settings.py的static files小節:
import os ... ... # Additional locations of static files HERE = os.path.dirname(__file__) STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. HERE+STATIC_URL, )
然后在urls.py中增加static的url映射:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns ... ... # for development only # This will only work if DEBUG is True. urlpatterns += staticfiles_urlpatterns()
啟動server,就可以通過http://127.0.0.1:8000/static/productlist.html看到設計好的界面了。
源代碼:http://download.csdn.net/detail/thinkinside/4036963
在下一節,終於可以修改模板,美化產品清單頁的樣式了。