django1.10開發(fā)博客(5)——界面美化和模板繼承

上一節(jié)我們實(shí)現(xiàn)了在網(wǎng)頁上顯示我們數(shù)據(jù)庫內(nèi)的博客,但是界面十分丑陋下隧,而且只是單一頁面奢人,這節(jié)我們要把界面美化一下,并且使用模板繼承淆院,為實(shí)現(xiàn)主界面與詳情界面的切換做準(zhǔn)備何乎。

界面美化


界面美化主要使用CSS,這是一種用來描述某種標(biāo)記語言寫的web站點(diǎn)的樣式語言。這部分主要是引用網(wǎng)上的CSS和JS文件鏈接或本地靜態(tài)文件宪赶,引用本地靜態(tài)文件時注意靜態(tài)文件位置配置以及在引用的時候加載就可以了宗弯。古城車票說的很詳細(xì),我想了一下沒有什么需要補(bǔ)充的搂妻,這里貼上她的鏈接:Django1.9開發(fā)博客(5)- 頁面美化

下面是我的這部分源碼蒙保,改動不大,基本和她的差不多欲主。
mysite\mysite\settings.py添加靜態(tài)文件目錄:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

前面講過模板目錄了邓厕,靜態(tài)目錄應(yīng)該就很好理解了,就是在mysite\static里面扁瓢。

在mysite\static\css\myblog.css里面寫:

.page-header {
    background-color: #1f71e0;
    margin-top: 0;
    padding: 20px 20px 20px 40px;
}
.page-header h1, .page-header h1 a, .page-header h1 a:visited, .page-header h1 a:active {
    color: #ffffff;
    font-size: 30pt;
    text-decoration: none;
}
.content {
    margin-left: 40px;
}
h1, h2, h3, h4 {
    font-family: 'Lobster', cursive;
}
.date {
    float: right;
    color: #828282;
}
.save {
    float: right;
}
.post-form textarea, .post-form input {
    width: 100%;
}
.top-menu, .top-menu:hover, .top-menu:visited {
    color: #ffffff;
    float: right;
    font-size: 26pt;
    margin-right: 20px;
}
.post {
    margin-bottom: 70px;
}
.post h1 a, .post h1 a:visited {
    color: #000000;
}

然后在mysite\templates\blog\post_list.html里详恼,第一行引入靜態(tài)文件路徑{% load staticfiles %},在<head>...</head>里加入CSS網(wǎng)鏈或本地靜態(tài)鏈接引几,<body>...</body>里排一下頁面布局昧互。最后大概變成下面這樣:

{% load staticfiles %}
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <link rel="stylesheet" >
    <link rel="stylesheet" href="{% static 'css/blog.css' %}">
    <title>Django Simple Blog</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="This is a simple django blog!">
    <title>Simple Django Blog</title>
</head>
<body>
    <div class="page-header">
        <div class="row">
            <h1><a href="/">Django Simple Blog</a></h1>
        </div>
    </div>
    <div class="content">
        <div class="row">
            <div class="col-md-8">
                {% for post in posts %}
                <div>
                    <h1><a href="">{{ post.title }}</a></h1>
                    <p>published: {{ post.published_date }}</p>
                    <p>{{ post.text|linebreaks }}</p>
                </div>
                {% endfor %}
            </div>
        </div>
    </div>
</body>
</html>

col-md-8viewportdescription是什么意思呢伟桅?Google解決敞掘。還有兩個CSS鏈接的先后順序有什么講究呢?自己換一下試試吧楣铁!

現(xiàn)在頁面應(yīng)該是這樣:


13.jpg

嗯玖雁,果然漂亮許多~

網(wǎng)頁favicon.ico

順便教一下怎么給網(wǎng)頁設(shè)置一個icon吧!
上一節(jié)最后說過盖腕,在未設(shè)置圖標(biāo)的情況下赫冬,網(wǎng)頁的圖標(biāo)應(yīng)該是一個空白文件的樣子。默認(rèn)情況下溃列,瀏覽器訪問一個網(wǎng)站的時候劲厌,同時還會向服務(wù)器請求“/favicon.ico”這個URL,目的是獲取網(wǎng)站的圖標(biāo)听隐。未設(shè)置情況下补鼻,Django會返回404錯誤,只是這個錯誤不會打印出來遵绰,并且瀏覽器接收到這個404錯誤后辽幌,也無傷大雅,因?yàn)闆]有圖標(biāo)就用默認(rèn)的圖標(biāo)椿访,也就是那個空白文件圖標(biāo)乌企,所以這個錯誤也沒有跟通常的404錯誤一樣在網(wǎng)頁上顯示出來。

最多三步就可解決:
1成玫、制作ico文件加酵∪鳎可以用PS或者某些在線生成ico的網(wǎng)站,注意命名為favicon.ico猪腕,然后放在mysite\static\img內(nèi)冗澈。這里推薦一個網(wǎng)站,既可以在線生成ico陋葡,自己也有很多好看的ico供選擇:http://www.easyicon.net/
我就在里面直接下載一張了:

ico

2亚亲、在html模板head里面添加<link rel="shortcut icon" href="{% static 'img/favicon.ico' %}">

刷新腐缤,完畢捌归!


14.jpg

網(wǎng)上查閱發(fā)現(xiàn)其實(shí)還應(yīng)該設(shè)置url:

url(r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/images/favicon.ico'}),

但是一來這個simple.redirect_to無效,估計這個方法早已經(jīng)更新了岭粤,二來到此就已經(jīng)實(shí)現(xiàn)了惜索,所以沒有再繼續(xù)探究。

模板繼承


我們平常訪問博客的時候肯定不止一個頁面剃浇,而且這些頁面通常具有相同或相似的布局和頁面元素巾兆,比如標(biāo)題、導(dǎo)航欄等等虎囚。如果每個頁面都重復(fù)寫這些東西的話角塑,一來繁瑣,二來如果我們改動版面的話就得把每個頁面的都改一遍溜宽,不便于維護(hù)吉拳。因此我們使用模板繼承的方法质帅,把各頁面共同的部分提取出來做成一個模板适揉,其他模板繼承這個模板,再加上自己獨(dú)有的部分煤惩,就能搭配出許多格式統(tǒng)一內(nèi)容各異的頁面嫉嘀。

在mysite\templates\blog下新建base.html,它與post_list.html在同一目錄下魄揉。復(fù)制post_list.html的內(nèi)容到base.html中剪侮,在base.html把{% for post in posts %}...{% endfor %}替換成

{% block content %}
{% endblock %}

也就是創(chuàng)建了一個名為content的block,別的模板就可以繼承base.html洛退,然后填充content產(chǎn)生自己特有的部分瓣俯,而其他部分都保持一致。

把post_list.html改為:

{% extends 'blog/base.html' %}
{% block content %}
    {% for post in posts %}
        <div class="post">
            <h1><a href="">{{ post.title }}</a></h1>
            <p>published: {{ post.published_date }}</p>
            <p>{{ post.text|linebreaks }}</p>
        </div>
    {% endfor %}
{% endblock content %}

第一行就是繼承了base.html兵怯,之后填充content彩匕,其實(shí)就是把原來被替換掉的for循環(huán)移到了這里。

保存媒区,刷新頁面驼仪,發(fā)現(xiàn)頁面和原來一樣掸犬,說明模板繼承生效了。以后我們再寫新的頁面的時候只寫content部分就行了绪爸,而對整體的修改湾碎,比如引入的CSS框架,就在base.html修改奠货。

下一節(jié)介褥,我們就繼承base.html模板寫其他詳情頁面。

2016.10.22

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末递惋,一起剝皮案震驚了整個濱河市呻顽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丹墨,老刑警劉巖廊遍,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贩挣,居然都是意外死亡喉前,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門王财,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卵迂,“玉大人,你說我怎么就攤上這事绒净〖洌” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵挂疆,是天一觀的道長改览。 經(jīng)常有香客問我,道長缤言,這世上最難降的妖魔是什么宝当? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮胆萧,結(jié)果婚禮上庆揩,老公的妹妹穿的比我還像新娘。我一直安慰自己跌穗,他們只是感情好订晌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚌吸,像睡著了一般锈拨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上套利,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天推励,我揣著相機(jī)與錄音鹤耍,去河邊找鬼。 笑死验辞,一個胖子當(dāng)著我的面吹牛稿黄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跌造,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼杆怕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了壳贪?” 一聲冷哼從身側(cè)響起陵珍,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎违施,沒想到半個月后互纯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磕蒲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年留潦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辣往。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡兔院,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出站削,到底是詐尸還是另有隱情坊萝,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布许起,位于F島的核電站十偶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏街氢。R本人自食惡果不足惜扯键,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一睦袖、第九天 我趴在偏房一處隱蔽的房頂上張望珊肃。 院中可真熱鬧,春花似錦馅笙、人聲如沸伦乔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烈和。三九已至,卻和暖如春皿淋,著一層夾襖步出監(jiān)牢的瞬間招刹,已是汗流浹背恬试。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疯暑,地道東北人训柴。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像妇拯,于是被迫代替她去往敵國和親幻馁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,860評論 25 707
  • 渲染模板 模板文件后綴名是 .html越锈, 這些文件就是普通的 html 文件加上一些占位符變量, 它們都默認(rèn)存放在...
    焉知非魚閱讀 687評論 0 1
  • 第三章 模板(Templates) 編寫易于維護(hù)的程序的要點(diǎn)在于書寫干凈仗嗦、良好結(jié)構(gòu)的代碼。你以前所見的代碼都過于...
    易木成華閱讀 1,124評論 0 2
  • 米藍(lán) 《為孩子立界線》20170601學(xué)而思D1/12 為何要與孩子立界線, 孩子為何需要界線 今天帶讀中首先介紹...
    童潤Mama閱讀 220評論 0 0
  • 一甘凭、我不想做 你之所以不想做稀拐,是因?yàn)闀簳r還沒走到山窮水盡,沒有到了非做不可的地步丹弱,你還有取舍的退路钩蚊,還有回旋的余地...
    莫秋言閱讀 433評論 0 9