根據(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)介