Django1.9快速寫(xiě)簡(jiǎn)單的博客

背景

好吧所宰,我承認(rèn)是我比較蛋疼,直接下了Django的最新版,然后好像很多東西都改了疯搅,比如生成sqlite數(shù)據(jù)庫(kù)的時(shí)候表制,老版本用的是python manage.py syncdb健爬,但是在1.9版本中移除了這個(gè)命令。最頭疼的是現(xiàn)在網(wǎng)絡(luò)上的教程說(shuō)的都是1.8或者更老版本的Django么介。于是花了點(diǎn)時(shí)間看了Django的官方文檔娜遵,結(jié)合蟲(chóng)師的教程簡(jiǎn)單寫(xiě)了一下


操作系統(tǒng):Mac OS X EI Caption
Python版本:3.4
Django版本:1.9
IDE:PyCharm


新建工程

首先在PyCharm中新建一個(gè)Django項(xiàng)目,會(huì)自動(dòng)幫你配置好工程的文件壤短,比如我的工程名字叫BlogC设拟。
manage.py ----- Django項(xiàng)目里面的工具,通過(guò)它可以調(diào)用django shell和數(shù)據(jù)庫(kù)等久脯。
settings.py ---- 包含了項(xiàng)目的默認(rèn)設(shè)置纳胧,包括數(shù)據(jù)庫(kù)信息,調(diào)試標(biāo)志以及其他一些工作的變量帘撰。
urls.py ----- 負(fù)責(zé)把URL模式映射到應(yīng)用程序躲雅。

創(chuàng)建一個(gè)應(yīng)用

在PyCharm命令行(以下簡(jiǎn)稱命令行)中輸入命令python manage.py startapp easyblog,命令的作用就是創(chuàng)建一個(gè)名字叫做easyblog的應(yīng)用骡和,如果是其他方式相赁,就用命令行工具進(jìn)入到BlogC的根目錄下(就是你打ls會(huì)看到manage.py這個(gè)文件的目錄)輸入這個(gè)命令

數(shù)據(jù)庫(kù)模型

在命令行中輸入python manage.py migrate,就會(huì)自動(dòng)根據(jù)Django現(xiàn)有的模型建立起一套強(qiáng)大的CMS(這里與老版本不一樣的內(nèi)容是:老版本使用的是syncdb這個(gè)命令慰于,而且老版本會(huì)自動(dòng)創(chuàng)建用戶)钮科。輸入完命令后你就會(huì)看到新建了一個(gè)db.sqlite的文件,這個(gè)就是你的數(shù)據(jù)庫(kù)文件(當(dāng)然你也可以用其他數(shù)據(jù)庫(kù))婆赠。這時(shí)一個(gè)CMS系統(tǒng)已經(jīng)搭建起來(lái)了绵脯,輸入python manage.py runserver啟動(dòng)Django服務(wù)器,然后進(jìn)入127.0.0.1:8000/admin就可以看到你的CMS系統(tǒng)了休里,不過(guò)現(xiàn)在還沒(méi)有用戶蛆挫。輸入命令python manage.py createsuperuser就會(huì)讓你輸入用戶名、密碼和郵箱妙黍。

SvenWengdeMacBook-Pro:BlogC svenweng$ python manage.py createsuperuser
Username (leave blank to use 'svenweng'): 
Email address: ****@qq.com
Password: 
Password (again): 
Superuser created successfully.

現(xiàn)在用這個(gè)用戶就可以進(jìn)入CMS系統(tǒng)了

定義博客的數(shù)據(jù)庫(kù)模型

我們網(wǎng)站的CMS已經(jīng)做好了悴侵,現(xiàn)在要定義我們自己的模型。

easyblog/models.py

from django.db import models
from django.contrib import admin


class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    timestamp = models.DateTimeField()

admin.site.register(BlogPost)

上面的代碼幫我們定義了一個(gè)簡(jiǎn)單的數(shù)據(jù)內(nèi)容∈眉蓿現(xiàn)在我們要讓數(shù)據(jù)庫(kù)發(fā)生變化可免。執(zhí)行以下命令

python manage.py makemigrations easyblog
python manage.py sqlmigrate easyblog 0001
python manage.py migrate

按順序執(zhí)行命令抓于,就會(huì)把我們新增的models生成。這個(gè)時(shí)候進(jìn)入CMS就可以看到多了一個(gè)group浇借,在里面輸入標(biāo)題捉撮,內(nèi)容和時(shí)間,保存即可妇垢。

視圖

寫(xiě)完數(shù)據(jù)模型后巾遭,我們寫(xiě)視圖函數(shù),讓我們的網(wǎng)站能夠展示出來(lái)闯估。

easyblog/views.py

from django.shortcuts import render
from easyblog.models import BlogPost


def index(request):
    blog_list = BlogPost.objects.all()
    return render(request, 'index.html', {'blog_list': blog_list})

def index表示定義一個(gè)index的視圖函數(shù)灼舍,BlogPost.objects.all()就表示我們剛剛定義的模型類BlogPost返回所有數(shù)據(jù),我們?cè)贑MS插入的文章就會(huì)全部返回給blog_list睬愤。最后就是把視圖函數(shù)處理的內(nèi)容返回給模版index.html。

模版

在模版文件templates中新建index.html纹安。根據(jù)視圖函數(shù)返回的數(shù)據(jù)尤辱,我們來(lái)編寫(xiě)這個(gè)index.html模版

templates/index.html

{% for blog in blog_list %}
    <h2>{{ blog.title }}</h2>
    <p>{{ blog.timestamp }}</p>
    <p>{{ blog.body }}</p>
{% endfor%}

視圖函數(shù)最后的{'blog_list': blog_list}就表示把blog_list的內(nèi)容賦值給‘blog_list’,所以在模版中我們要有‘blog_list’這個(gè)變量厢岂,用for來(lái)迭代光督,把數(shù)據(jù)全部打出來(lái)

地址

內(nèi)容我們已經(jīng)寫(xiě)好了,現(xiàn)在要通過(guò)一個(gè)地址定位到我們寫(xiě)的網(wǎng)站塔粒。在BlogC中已經(jīng)有一個(gè)urls.py文件结借,這個(gè)文件就是把定位到我們網(wǎng)站的地址。

BlogC/urls.py

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^easyblog/', include('easyblog.urls')),
]

上面的代碼就表示我們輸入地址后帶有easyblog的鏈接全部會(huì)跳轉(zhuǎn)到easyblog/urls.py這個(gè)文件中卒茬,我們需要新建這個(gè)文件船老,然后輸入下面的代碼

easyblog/urls.py

from django.conf.urls import url
from . import views


urlpatterns = [
    url(r'^$', views.index, name='index'),
]

這個(gè)就表示我們輸入地址后帶有easyblog的網(wǎng)址鏈接的視圖。url的參數(shù)圃酵,第一個(gè)是一個(gè)名稱適配的正則柳畔。這里表示為空,第二個(gè)參數(shù)就是視圖函數(shù)的地址了郭赐,name表示視圖函數(shù)的名稱薪韩。

完工

我們簡(jiǎn)單的blog系統(tǒng)就搭建起來(lái)了,現(xiàn)在需要看看結(jié)果是什么捌锭,運(yùn)行python manage.py runserver俘陷,進(jìn)入127.0.0.1:8000/easyblog。就可以看到我們剛剛寫(xiě)的網(wǎng)站了观谦。

優(yōu)化

我們發(fā)現(xiàn)我們寫(xiě)的網(wǎng)站很丑拉盾。這時(shí)你需要給你的模版加上一些css樣式,新建一個(gè)base.html模版豁状,輸入下列代碼

templates/base.html

<html>
      <style type="text/css">
        body{color:#efd;background:#453;padding:0 5em;margin:0}
        h1{padding:2em 1em;background:#675;text-align: center}
        h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
        p{margin:1em 0}
      </style>

      <body>
        <h1>點(diǎn)點(diǎn)寒彬的blog</h1>
        <h3>精通各大語(yǔ)言的hello world!</h3>
        {% block content %}
        {% endblock %}
      </body>
</html>

然后把我們之前的index.html代碼改為這樣

templates/index.html

{% extends "base.html" %}

{% block content %}
{% for blog in blog_list %}
    <h2>{{ blog.title }}</h2>
    <p>{{ blog.timestamp }}</p>
    <p>{{ blog.body }}</p>
{% endfor%}
{% endblock %}

好了盾剩,再次進(jìn)入我們的網(wǎng)站看看雷激。
放一張我自己寫(xiě)的樣式圖


樣式圖

后記

這里搭建的只是一個(gè)很簡(jiǎn)單很簡(jiǎn)單的博客系統(tǒng),它沒(méi)有登陸告私,分類等博客的相關(guān)要素屎暇,需要你自己去拓展。CSS真是一個(gè)不錯(cuò)的東西驻粟。值得去看看根悼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蜀撑,隨后出現(xiàn)的幾起案子挤巡,更是在濱河造成了極大的恐慌,老刑警劉巖酷麦,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矿卑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沃饶,警方通過(guò)查閱死者的電腦和手機(jī)母廷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)糊肤,“玉大人琴昆,你說(shuō)我怎么就攤上這事」萑啵” “怎么了业舍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)升酣。 經(jīng)常有香客問(wèn)我舷暮,道長(zhǎng),這世上最難降的妖魔是什么噩茄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任脚牍,我火速辦了婚禮,結(jié)果婚禮上巢墅,老公的妹妹穿的比我還像新娘诸狭。我一直安慰自己,他們只是感情好君纫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布驯遇。 她就那樣靜靜地躺著,像睡著了一般蓄髓。 火紅的嫁衣襯著肌膚如雪叉庐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天会喝,我揣著相機(jī)與錄音陡叠,去河邊找鬼玩郊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枉阵,可吹牛的內(nèi)容都是我干的译红。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兴溜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼侦厚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拙徽,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刨沦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后膘怕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體想诅,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年岛心,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了来破。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹉梨,死狀恐怖讳癌,靈堂內(nèi)的尸體忽然破棺而出穿稳,到底是詐尸還是另有隱情存皂,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布逢艘,位于F島的核電站旦袋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏它改。R本人自食惡果不足惜疤孕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望央拖。 院中可真熱鬧祭阀,春花似錦、人聲如沸鲜戒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遏餐。三九已至伦腐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間失都,已是汗流浹背柏蘑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工幸冻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咳焚。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓洽损,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親黔攒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趁啸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容