實戰Django:簡易博客Part1

捨得學習新技能的時候,一般不喜歡傻讀書——捧着一本闡述該項技能的書籍,而後傻看,一路看下來,腦子裏塞滿了新的概念、知識點,頭是愈來愈大,但技能卻幾乎沒掌握半分。python

多年來,捨得養成了用作實例來學習新技能的習慣。這可不是捨得的首創,在象棋、圍棋界中,從來有「打譜」一說,就是根據棋譜,把一步步棋擺出來,在打譜的過程當中,去感悟、去吸取,此時感悟到的、吸取進的,纔是屬於你本身的東西。新的技能就這樣一步步發展起來,逐漸壯大。數據庫

就象Django官方文檔那樣,一個實例看起來很簡單,但做爲初學者,用」打譜「的方式一遍遍去作這個實例,比起將書拿起來從頭看到尾的傻讀書,進步速度何止高出一兩倍?django

因此在介紹新技能的書籍中,捨得偏心那些用實例來傳道、授業、解惑的書。瀏覽器

《Django WEB開發指南》(《Python Web Development with Django》)是爲數很少的Django精品書籍之一,出版於2009年,並於同年被引入國內,由機械工業出版社出版。這本書中絕大部分篇幅用實例來說解Django的使用,剛好是捨得欣賞的類型。遺憾的是當時所用的Django是1.0版,代碼上和咱們如今用的Django 1.7.1有必定的差別。對於新人來講,實踐起來頗爲費事。捨得將書中的實例從新整理,用Django 1.7.1的標準來修正其中的代碼,以方便初學者利用這些實例來學習Django。服務器

今天捨得要講的,即是該書中的第一個實例:blog.這個實例很是簡單,基本的操做與官方實例很相近,咱們能夠經過這個實例來複習一下前面學到的知識。session

0.上路以前 app


捨得強烈建議你們動手來逐一完成本實例的細節。若是你第一次接觸Django,建議先作捨得在《實戰Django:官方實例》系列中的實例,那裏介紹了Django中最基本的技術。ide

在作實例的過程當中,若是你遇到和你在這裏看到的結果不一樣的狀況時,請停下來檢查剛纔的步驟,而後複查以前的兩到三步。看看是否是有哪些看起來不過重要的地方,或哪些不能理解的步驟遺漏掉了。若是仍是沒有發現,不如刪掉整個項目從頭開始作,這個方法很是管用。post

 

1.建立項目和應用 學習


咱們先來建立本實例的項目,在dos命令提示符下轉到Scripts文件夾(如「c:\python32\Scripts」),而後運行以下命令:

$ django-admin startproject blogproject

沒有任何錯誤提示的話,說明項目建立成功了,而後在dos命令提示符下繼續輸入命令,進入項目文件夾:

cd blogproject

開始建立應用,在dos命令提示符下輸入命令:

$ python manage.py startapp blog

命令執行完後,blogproject文件夾下會多出一個叫blog的文件夾,應用就建好了。

2.創建模型


編輯blog/models.py文件,象下面這樣:

blog/models.py:

from django.db import models
class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

    class Meta:
        ordering = ('-timestamp',)

3.激活模型


首先修改blogproject/settings.py這個文件,找到INSTALLED_APPS這段設置,把它改爲下面這個樣子:

blogproject/settings.py:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)

編輯settings.py的時候,建議順便修改一下語言和時區的設置,具體的方法請參考:《實戰Django:官方實例Part1》

而後在dos命令提示符下運行以下命令:

$ python manage.py makemigrations blog

繼續在dos命令提示符下運行命令:

$ python manage.py migrate

這樣,就把數據庫建好了。

4.建立管理員帳號


在dos命令提示符下運行以下命令:
$ python manage.py createsuperuser

而後依次輸入admin,你的郵箱,輸入兩次密碼,完成建立管理員的操做。

5.在管理界面註冊應用


編輯blog/admin.py 文件,讓它變成下面這個樣子:

blog/admin.py

from django.contrib import admin
from blog.models import BlogPost

admin.site.register(BlogPost)

6.啓動服務器


在dos命令提示符下運行以下命令:

$ python manage.py runserver

命令執行後,你會看到相似這樣的字符出現:

December 07, 2014 - 18:56:24
Django version 1.7.1, using settings 'blogproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

這就表示服務器已經成功啓動了.

咱們先訪問一下管理界面,打開瀏覽器,在地址欄內輸入:

而後輸入你剛纔建立的管理員帳號和密碼,登陸管理界面,你會看到下面這樣的畫面:

1

若是你看到的和這裏顯示的不同,請返回檢查前面的操做。

Tips:
三個最多見的」在管理界面看不到個人應用「的緣由:
1.沒有在應用的admin.py中註冊應用的模型;
2.應用的模型配置錯誤;
3.忘記往項目的aettings.py的INSTALLED_APPS添加你的應用;
7.添加文章  

點擊Blog posts右側的「增長」按鈕,管理界面會顯示一個表單,讓你用來添加文章:

2

往裏填寫一些內容試試,填完後點擊」保存「按鈕。

3

你會收到一個確認消息:「BlogPost object」添加成功。同時Django會列出你的文章列表,目前只有一篇文章。

再次看到象BlogPost object這樣的難看名字,回憶一下咱們在《實戰Django:官方實例Part2》中是怎麼處理的?

編輯blog/admin.py 文件,讓它變成下面這個樣子:

blog/admin.py

from django.contrib import admin
from blog.models import BlogPost

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title', 'timestamp')

admin.site.register(BlogPost, BlogPostAdmin)

刷新一下瀏覽器,咱們能夠看到:

4

在這裏,咱們能夠用在官方實例裏學到的技能,給管理頁面增長搜索、自定義排序、過濾等功能。捨得再也不就這些問題一一講解,你們自行練習吧。

 

【未完待續】

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

相關文章
相關標籤/搜索