在前面咱們已經陸續學習了六個Django的實例,其中一個來自Django官方的文檔,另外五個來自《Django Web開發指南》。捨得介紹的每個實例,都是按照官方文檔的標準,力求讓你們在根據文章去作本身的實例時,可以按「文」索驥,輕鬆再現整個實例的製做過程。css
接下來,捨得要介紹一個大型的實例,這個項目叫作Rango,它來自Django圈內口碑甚佳的《How to Tango with Django》一書。事實上,此書就是圍繞Rango這一個實例來展開的,並且,做者在介紹實例的時候,儘量按照官方實例的標準來介紹整個製做過程,對學習者幫助甚大。這個實例已被收入到官方的實例庫中(見https://code.djangoproject.com/wiki/Tutorials)。html
《How to Tango with Django》並無正式出版,而是以在線文檔的方式來分享,你們能夠從這裏閱讀到這本書的內容:http://www.tangowithdjango.com/book/(這是適用於Django 1.5.4版的,Django 1.7版的能夠看這裏:http://www.tangowithdjango.com/book17/)。python
因爲市面上並沒有該書的PDF或Epub格式下載,捨得從做者的網站上抓取了html文件,從新整理了版面,將其製做成epub的格式電子書,解決因受網速影響而致使閱讀不順暢的問題。有興趣的童鞋能夠從這裏下載:捨得學苑下載中心(此連接爲1.7版電子書,據瞭解,該版本目前還沒有正式完成,即仍處於草稿狀態,介意的童鞋可下載1.5.4版)sql
《How to Tango with Django》中的實例顯然要比舍得以前分享的六個實例要大得多,可是,不要被它的「大」嚇到,它仍然只是一個適合初學者入門的實例。童鞋們能夠經過這個實例,複習以前學過的內容,此外,還能夠學到一些新的技巧,好比用戶登陸,Bootstrap,以及更實用的Ajax應用等等。數據庫
注意,本實例所用的Django版本爲1.7.1,Python版本爲3.2,操做系統爲Win8。django
1.建立項目和應用瀏覽器
咱們先來建立本實例的項目,在dos命令提示符下轉到Scripts文件夾(如「c:\python32\Scripts」),而後運行以下命令:服務器
$ django-admin startproject rangoproject
而後在dos命令提示符下繼續輸入以下命令,進入項目文件夾:session
cd rangoproject
接下來開始建立應用,在dos命令提示符下輸入命令:app
$ python manage.py startapp rango
命令執行完後,項目根文件夾下會出現一個叫rango的文件夾,應用建立完畢。
關於項目根文件夾:
當你建立好項目時,你會發現其文件夾的結構會是下面這樣:
rangoproject/ manage.py rangoproject/ __init__.py settings.py urls.py wsgi.py
這裏有兩個rangoproject文件夾,咱們把上面一個叫作項目根文件夾,下面一個(和manage.py並列的)叫作項目配置文件夾。
2.創建模型
編輯rango/models.py文件,改爲下面這樣:
rango/models.py:
from django.db import models class Category(models.Model): name = models.CharField(max_length=128, unique=True) def __str__(self): return self.name class Page(models.Model): category = models.ForeignKey(Category) title = models.CharField(max_length=128) url = models.URLField() views = models.IntegerField(default=0) def __str__(self): return self.title
首先修改rangoproject/settings.py這個文件,找到INSTALLED_APPS這段設置,把它改爲下面這個樣子:
rangoproject/settings.py:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rango', )
編輯settings.py的時候,建議順便修改一下語言和時區的設置,具體的方法請參考:《實戰Django:官方實例Part1》
而後在dos命令提示符下運行以下命令:
$ python manage.py makemigrations rango
繼續在dos命令提示符下運行命令:
$ python manage.py migrate
這樣,數據庫就建好了。咱們在實例中(包括以前的六個實例)使用的是Django默認的Sqlite3數據庫,數據庫文件爲db.sqlite3,存放在項目根文件夾下,這一樣是默認的設置,你能夠在settings.py的DATABASES設置中看到。
4.建立管理員帳號在dos命令提示符下運行以下命令:
$ python manage.py createsuperuser
而後依次輸入admin,你的郵箱,輸入兩次密碼,完成建立管理員的操做。
5.在管理界面註冊應用編輯rango/admin.py 文件,讓它變成下面這個樣子:
rango/admin.py:
from django.contrib import admin from rango.models import Category, Page class PageAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'url') admin.site.register(Category) admin.site.register(Page, PageAdmin)
6.啓動服務器
在dos命令提示符下運行以下命令:
$ python manage.py runserver
http://127.0.0.1:8000/admin/
而後輸入你剛纔建立的管理員帳號和密碼,登陸管理界面,你能夠先嚐試添加一些東西,或者,什麼都不作。
7.模板和靜態文件配置編輯rangoproject/settings.py這個文件,在文件末加入如下內容:
rangoproject/settings.py:
STATIC_PATH = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = ( STATIC_PATH, ) TEMPLATE_PATH = os.path.join(BASE_DIR, 'templates') TEMPLATE_DIRS = ( TEMPLATE_PATH, ) MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
其中,STATIC_PATH主要用來存放CSS、JS及圖片文件,TEMPLATE_PATH用來存放模板文件(項目中全部的模板文件都放在這裏,便於管理),MEDIA_ROOT則是用來存放用戶上傳的圖片之類文件。
下面,咱們一一建立上面講到的文件夾,在項目根文件夾下:
而後在static文件夾下:
咱們來測試一下靜態文件的配置,找一張jpg格式的文件,將其命名爲rango.jpg(或直接下載這張圖片:http://www.tangowithdjango.com/static/rango.jpg),把它放到static/img文件夾下,它的正確路徑應該是:
rangoproject/static/img/rango.jpg
在瀏覽器地址欄內輸入:
若是你能看到圖片,說明靜態文件配置成功了.
8.練習1)更新「Category」模型,加入如下兩個屬性:views和likes,默認值均爲0。
2)更新數據庫。
3)學習「官方實例Part2」,若是你以前還沒看過的話。
提示:
【未完待續】