Django第五課:博客主頁面開發(fā)

根據(jù)需要,我們大概需要三個(gè)部分:

1.博客主頁面
2.博客文章內(nèi)容頁面
3.博客撰寫頁面

主頁面內(nèi)容

  • 文件標(biāo)題列表,超鏈接
  • 發(fā)表博客按鈕

編寫思路:
取出數(shù)據(jù)庫中所有文章對(duì)象
將文章對(duì)象打包成列表,傳遞到前端
前端頁面把文章以標(biāo)題超鏈接的形式逐個(gè)列出

博客文章頁面

頁面內(nèi)容:

  • 標(biāo)題
  • 文章內(nèi)容
  • 修改文章按鈕

廢話不多說,我們開始編寫代碼。首先在views.py中修改和編寫函數(shù):

def index(request):
    articles = models.Article.objects.all()        #獲取所有的文章對(duì)象
    return render(request, "blog/index.html", {'articles': articles})

在這里補(bǔ)充一下render函數(shù):

_ render(request, template_name, context=None, content_type=None, status=None, using=None)_

Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments.
此方法的作用---結(jié)合一個(gè)給定的模板和一個(gè)給定的上下文字典,并返回一個(gè)渲染后的 HttpResponse 對(duì)象。
通俗的講就是把context的內(nèi)容, 加載進(jìn)templates中定義的文件, 并通過瀏覽器渲染呈現(xiàn).

參數(shù)講解:

request: 是一個(gè)固定參數(shù), 沒什么好講的。
template_name: templates 中定義的文件, 要注意路徑名. 比如'templates\polls\index.html', 參數(shù)就要寫‘polls\index.html’
context: 要傳入文件中用于渲染呈現(xiàn)的數(shù)據(jù), 默認(rèn)是字典格式
content_type: 生成的文檔要使用的MIME 類型。默認(rèn)為DEFAULT_CONTENT_TYPE 設(shè)置的值。
status: http的響應(yīng)代碼,默認(rèn)是200.
using: 用于加載模板使用的模板引擎的名稱。

常見的MIME類型(通用型):

超文本標(biāo)記語言文本 .html text/html
xml文檔 .xml text/xml
XHTML文檔 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文檔 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG圖像 .png image/png
GIF圖形 .gif image/gif
JPEG圖形 .jpeg,.jpg image/jpeg
au聲音文件 .au audio/basic
MIDI音樂文件 mid,.midi audio/midi,audio/x-midi
RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二進(jìn)制數(shù)據(jù) application/octet-stream

接著,我們修改index.html模板文件:

<body>
<h1><a href="">新文章</a></h1>#標(biāo)題
{% for article in articles %}        #Django模板語言
    <a href="">{{ article.title }}</a>    #文章標(biāo)題
    <br/>
{% endfor %}
</body>

這樣,主頁面的前端和后端就都寫完了。接著我們編寫文章頁面的后端,進(jìn)入views.py添加如下函數(shù):

def article_page(request,article_id):
    #獲取文章對(duì)象
    article = models.Article.objects.get(pk = article_id)
    return render(request,'blog/article_page.html',{'article':article})

其中的article_id參數(shù)是作為文章的唯一標(biāo)識(shí)(id),是django支持的。
然后寫前端,新建一個(gè)模板文件article_page.html,在body中添加:

<body>
<h1>{{ article.title }}</h1>    #獲取文章標(biāo)題
<br/>
<br/>
{{ article.content }}    #獲取文章內(nèi)容
<br/><br/>
<a href="">修改文章</a>  #指向修改文章頁面的超鏈接,留待后用
</body>

有關(guān)于頁面的前后端寫完后我們就要配置URL了。來到blog目錄下的urls.py中,向urlpatterns中添加代碼如下:

url(r'^article/(?P<article_id>[0-9]+)$',views.article_page)#第一個(gè)參數(shù)是有關(guān)正則表達(dá)式的內(nèi)容

這樣我們的頁面就簡(jiǎn)單的搭建好了。
django第一課:創(chuàng)建第一個(gè)頁面
Django第二課:創(chuàng)建第一個(gè)頁面(響應(yīng)),template
Django第三課:models
Django第四課:Admain簡(jiǎn)介

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容