Diango博客--2.博客從“裸奔”到“有皮膚”

文章目錄

    • 0.思路引導
    • 1.更改視圖函數,從數據庫中獲取數據
    • 2.網上下載模板,添加靜態文件
    • 3.修改模板Templates中css、js文件的加載路徑
    • 4.修改模板,引入模板變量,獲取數據庫數據

0.思路引導

前文的Hello World 級別的視圖函數特別簡單,且毫無美感,本文有以下兩個重點:
1)將借用網上的模板文件,豐富模板內容;
2)從數據庫中獲取數據,并推送到模板文件的模板變量中。
在這里插入圖片描述

1.更改視圖函數,從數據庫中獲取數據

文件位置:blog/views.py

from django.shortcuts import render
from .models import Postdef index(request):post_list = Post.objects.all().order_by('-created_time')return render(request, 'blog/index.html', context={'post_list': post_list})

2.網上下載模板,添加靜態文件

網上下載靜態文件,地址:戳這里

先在 blog 應用下建立一個 static 文件夾,然后在 static目錄下建立一個 blog 文件夾,把下載的博客模板中的 css 和 js 文件夾連同里面的全部文件一同拷貝進這個目錄;

然后將下載文件中的index.html中代替模板Templates里邊的index.html;

此時運行pipenv run python manage.py runserver,打開瀏覽器如下:
在這里插入圖片描述可以看到,首頁顯示的樣式非常混亂,原因是瀏覽器無法正確加載 CSS 等樣式文件。需要修改CSS 和 JavaScript 等靜態文件的加載路徑。

3.修改模板Templates中css、js文件的加載路徑

文件位置:templates/blog/index.html

+ {% load static %}
<!DOCTYPE html>
<html><head><title>Black &amp; White</title><!-- meta --><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- css -->- <link rel="stylesheet" href="css/bootstrap.min.css"><link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">- <link rel="stylesheet" href="css/pace.css">- <link rel="stylesheet" href="css/custom.css">+ <link rel="stylesheet" href="{% static 'blog/css/bootstrap.min.css' %}">+ <link rel="stylesheet" href="{% static 'blog/css/pace.css' %}">+ <link rel="stylesheet" href="{% static 'blog/css/custom.css' %}"><!-- js -->- <script src="js/jquery-2.1.3.min.js"></script>- <script src="js/bootstrap.min.js"></script>- <script src="js/pace.min.js"></script>- <script src="js/modernizr.custom.js"></script>+ <script src="{% static 'blog/js/jquery-2.1.3.min.js' %}"></script>+ <script src="{% static 'blog/js/bootstrap.min.js' %}"></script>+ <script src="{% static 'blog/js/pace.min.js' %}"></script>+ <script src="{% static 'blog/js/modernizr.custom.js' %}"></script></head><body><!-- 其它內容 -->- <script src="js/script.js' %}"></script>+ <script src="{% static 'blog/js/script.js' %}"></script></body>
</html>

注意:這里 - 表示刪掉這一行,而 + 表示增加這一行。

運行服務器后,顯示效果如下:
在這里插入圖片描述

4.修改模板,引入模板變量,獲取數據庫數據

目前我們看到的只是模板中預先填充的一些數據,我們得讓它顯示從數據庫中獲取的文章數據。下面來稍微改造一下模板:
1)在模板 index.html 中找到一系列 article 標簽:

templates/blog/index.html...
<article class="post post-1">...
</article><article class="post post-2">...
</article><article class="post post-3">...
</article>
...

2)將 index.html 中多余的 article 標簽刪掉,只留下一個 article 標簽,然后寫上下列代碼:

...
{% for post in post_list %}<article class="post post-{{ post.pk }}">...</article>
{% empty %}<div class="no-post">暫時還沒有發布的文章!</div>
{% endfor %}
...

3)修改article 標簽中的具體內容

<h1 class="entry-title"><a href="single.html">Adaptive Vs. Responsive Layouts And Optimal Text Readability</a>
</h1>
<div class="entry-meta"><span class="post-category"><a href="#">django 博客教程</a></span><span class="post-date"><a href="#"><time class="entry-date"datetime="2012-11-09T23:15:57+00:00">2017511</time></a></span><span class="post-author"><a href="#">追夢人物</a></span><span class="comments-link"><a href="#">4 評論</a></span><span class="views-count"><a href="#">588 閱讀</a></span>
</div>

改為

<h1 class="entry-title"><a href="single.html">{{ post.title }}</a>
</h1>
<div class="entry-meta"><span class="post-category"><a href="#">{{ post.category.name }}</a></span><span class="post-date"><a href="#"><time class="entry-date"datetime="{{ post.created_time }}">{{ post.created_time }}</time></a></span><span class="post-author"><a href="#">{{ post.author }}</a></span><span class="comments-link"><a href="#">4 評論</a></span><span class="views-count"><a href="#">588 閱讀</a></span>
</div>

標簽中

<div class="entry-content clearfix"><p>免費、中文、零基礎,完整的項目,基于最新版 django 1.10 和 Python 3.5。帶你從零開始一步步開發屬于自己的博客網站,幫助你以最快的速度掌握 django開發的技巧...</p><div class="read-more cl-effect-14"><a href="#" class="more-link">繼續閱讀 <span class="meta-nav"></span></a></div>
</div>

改為:

<div class="entry-content clearfix"><p>{{ post.excerpt }}</p><div class="read-more cl-effect-14"><a href="#" class="more-link">繼續閱讀 <span class="meta-nav"></span></a></div>
</div>

4)運行服務器后,顯示效果如下:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452531.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452531.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452531.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

抽象

人類在認識復雜現象的過程中使用的最強有力的思維工具是抽象。人們在實踐中認識到&#xff0c;在現實世界中一定事物、狀態或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來&#xff0c;暫時忽略它們之間的差異&#xff0c;這就是抽象。或者說抽象就是…

程序員的成長從開竅開始系列 一、如何擺脫低級錯誤的困擾

最近&#xff0c;有兩位Google Maps API的初學者向我請教他們按照最簡單例子寫的程序為什么不能正常的運行。 其中一位用GTalk跟我交流&#xff0c;我仔細了看了他的代碼&#xff0c;沒看出問題&#xff0c;把代碼保存在本地&#xff0c;打開Firefox的錯誤控制臺&#xff0c;用…

脈沖時間寬度c語言,什么是脈沖寬度_脈沖寬度是什么意思

脈沖寬度是個很廣泛的詞&#xff0c;在不同的領域&#xff0c;脈沖寬度有不同的含義。脈沖寬度從學術角度講就是電流或者電壓隨時間有規律變化的時間寬度&#xff0c;平時研究主要是方波&#xff0c;三角波&#xff0c;鋸齒波&#xff0c;正弦函數波等等&#xff0c;這些波形變…

HDU - 5919 Sequence II

題意&#xff1a; 給定長度為n的序列和q次詢問。每次詢問給出一個區間&#xff08;L&#xff0c;R&#xff09;&#xff0c;求出區間內每個數第一次出現位置的中位數&#xff0c;強制在線。 題解&#xff1a; 用主席樹從右向左的插入點。對于當前點i&#xff0c;如果a[i]出現過…

Django博客--3.創作后臺開啟

文章目錄0.創建admin后臺管理員賬號1.在 admin 后臺注冊模型2.漢化應用的標題3.漢化應用下各個模塊的名稱4.漢化應用下各個模塊的屬性的名稱5.文章列表顯示更加詳細的信息6.簡化新增文章的表單7.自動設置文章作者為當前用戶8.設定創建時間為當前時間9.設定修改建時間為保存時的…

逐步求精

逐步求精定義為為了能集中精力解決主要問題而盡量推遲對問題細節的考慮。 逐步求精最初是由NiklausWirth提出的一種自頂向下的設計策略。按照這種設計策略&#xff0c;程序的體系結構是通過逐步精化處理過程的層次而設計出來的。通過逐步分解對功能的宏觀陳述而開發出層次結構…

raid-6磁盤陣列損壞導致數據丟失的恢復過程(圖文教程)

一、故障描述機房突然斷電導致整個存儲癱瘓&#xff0c;加電后存儲依然無法使用。經過用戶方工程師診斷后認為是斷電導致存儲陣列損壞。整個存儲是由12塊日立硬盤&#xff08;3T SAS硬盤&#xff09;組成的RAID-6磁盤陣列&#xff0c;被分成一個卷&#xff0c;分配給幾臺Vmware…

編寫登錄注冊

const readline require(readline-sync);let error 3;let user [{username: 001,password: 123}, {username: 002,password: 456}, {uesrname: 003,password: 789}]//登錄let denglu function () {while (true) {console.log(請輸入您的登錄賬號&#xff1a;);let username…

android將字符串轉化為json,將字符串轉換為JSON數組

將字符串轉換為JSON數組我從Web服務獲得以下字符串的JSON&#xff0c;并嘗試將其轉換為 JSONarray{"locations": [{"lat": "23.053","long": "72.629","location": "ABC","address": "D…

談新技術學習方法-如何學習一門新技術新編程語言

學習一門編程語言或者編程技術的方式基本上是這樣一個流程&#xff1a; 1&#xff0c;對學習這門語言或者技術的必要性進行評估。比如你是工作需要&#xff0c;或者興趣所至&#xff0c;甚至是為了把妹。這個必要性關系到你要學多深入&#xff0c;需要學習多長時間。 比如我想…

信息隱藏和局部化

信息隱藏原理&#xff1a;應該這樣設計和確定模塊&#xff0c;使得一個模塊內包含的信息(過程和數據)對于不需要這些信息的模塊來說&#xff0c;是不能訪問的。 局部化是指把一些關系密切的軟件元素物理地放得彼此靠近。 如果在測試期間和以后的軟件維護期間需要修改軟件&#…

圖像識別自動化android,Android自動化測試

寫在開頭&#xff1a;Android UI 自動化測試推薦網易的Airtest&#xff0c;也是谷歌推薦的&#xff0c;操作簡單&#xff0c;而且基于圖像識別根據用戶操作界面自動生成Python測試代碼JUnit單元測試testImplementation junit:junit:4.12image.pngimage.png使用gradle命令進行單…

如何重構“箭頭型”代碼

本文主要起因是&#xff0c;一次在微博上和朋友關于嵌套好幾層的if-else語句的代碼重構的討論&#xff08;微博原文&#xff09;&#xff0c;在微博上大家有各式各樣的問題和想法。按道理來說這些都是編程的基本功&#xff0c;似乎不太值得寫一篇文章&#xff0c;不過我覺得很多…

Django博客--4.開發博客文章詳情頁

文章目錄0.思路引導1.設計文章詳情頁的 URL2.獲取文章的URL3.編寫 detail 視圖函數4.編寫詳情頁模板5.更改主頁中跳轉詳情頁的地址鏈接6.模板繼承--抽取base.html7.模板繼承--修改 index.html使其繼承base.html8.模板繼承--修改detail.html使其繼承base.html9.結果展示0.思路引…

10、并發容器,ConcurrentHashMap

Java 提供了不同層面的線程安全支持。在傳統集合框架內部&#xff0c;除了 Hashtable 等同步容器&#xff0c;還提供了所謂的同步包裝器&#xff08;Synchronized Wrapper&#xff09;&#xff0c;我們可以調用 Collections 工具類提供的包裝方法&#xff0c;來獲取一個同步的包…

程序員的本質

Computers are useless. They can only give you answers. – Picasso計算機沒有什么作用。他們只能告訴你答案。——畢加索很多人&#xff08;包括我岳母&#xff09;認為計算機變得如此智能&#xff0c;所以在不久的未來將不再需要程序員。另外一些人認為程序員是天才&#x…

模式-視圖-控制器模式2.0

1 MVC的實現   1.1 分析應用問題&#xff0c;對系統進行分離   分析應用問題&#xff0c;分離出系統的內核功能、對功能的控制輸入、系統的輸出行為三大部分。設計模型部件使其封裝內核數據和計算功能&#xff0c;提供訪問顯示數據的操作&#xff0c;提供控制內部行為的操作…

總體設計的原理

1 模塊化 2 抽象 3 逐步求精 4 信息隱藏和局部化 5 模塊獨立

android 手動回收對象,Android Studio Studio回收列表中的JSON對象

我想在recyclerview中顯示一些JSON對象&#xff0c;并且希望它們在日期之后排序&#xff0c;我該如何實現&#xff1f;下面是下載從JSON URL的數據的方法&#xff1a;Android Studio Studio回收列表中的JSON對象public void downloadFromSkistar(){try{URL url new URL("…

剖析管理所有大數據組件的可視化利器:Hue

歡迎關注大數據和人工智能技術文章發布的微信公眾號&#xff1a;清研學堂&#xff0c;在這里你可以學到夜白&#xff08;作者筆名&#xff09;精心整理的筆記&#xff0c;讓我們每天進步一點點&#xff0c;讓優秀成為一種習慣&#xff01; 日常的大數據使用都是在服務器命令行中…