實戰Django:Rango Part1

 

在前面咱們已經陸續學習了六個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
3.激活模型

首先修改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文件夾
  • 建立templates文件夾
  • 建立media文件夾

而後在static文件夾下:

  • 建立img文件夾
  • 建立js文件夾
  • 建立css文件夾

咱們來測試一下靜態文件的配置,找一張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」,若是你以前還沒看過的話。

提示:

  • views和likes的字段類型均爲「IntegerField」。
  • 更新數據庫用makemigrations和migrate命令。

 

【未完待續】

本文版權歸捨得學苑全部,歡迎轉載,轉載請註明做者和出處。謝謝!
做者:捨得
首發:捨得學苑@博客園

相關文章
相關標籤/搜索