使用django開發部落格過程記錄3 部落格側欄實現

2022-02-23 17:03:55 字數 3756 閱讀 7576

說起這個側欄真是苦惱我很長時間,一開始以為和之前的一樣傳遞額外引數就可以了就像下面這樣:

class

indexview(listview):

template_name = '

'context_object_name = '

article_list

'def

get_queryset(self):

article_list = article.objects.filter(status='p'

)

return

article_list

def get_context_data(self, **kwargs):

context = super(publisherdetail, self).get_context_data(**kwargs)

context[

'category

'] =category.objects.all()

return context

但是自己一想,這個只是渲染到了首頁,那如果我要是跳轉導一篇部落格的詳細頁面的時候怎麼辦,還要在部落格詳細頁面也渲染乙個category上下文引數嗎?後來的github上看了一下別人的**才恍然大悟,原來模板中的內容不只是通過上下變數進行渲染,還可以有其他的方式,乙個叫 django.template.requestcontext的類,詳細內容請看the django book第九章。

我們接下來進行配置:

templates =[,},

]

#

-*- coding:utf-8 -*-

from django.db.models import

count

from .models import

article, category, tag

defsidebar(request):

#取出構造側欄時需要用到的資訊.

recent_posts = article.objects.filter(status__exact='

p').order_by('

create_time

')[:3]

unregular_dates = article.objects.values_list('

create_time

').order_by('

-create_time')

category_list = category.objects.filter(article__status='

p').annotate(number_of_articles=count('

article'))

tag_list = tag.objects.filter(article__status='

p').annotate(number_of_articles=count('

article'))

#初始化構造歸檔時用到的資料.

dates =

temp_dates =

month_count = 1piece ={}

dates_tuple = [(date[0].year, date[0].month) for date in

unregular_dates]

"""如果乙個元組資訊不再temp_dates中,

那麼就將其相關資訊插入導返回結果中,

並且將記錄每月部落格數量變數month_count設定為1

"""for date in

dates_tuple:

month_count += 1

if date not

intemp_dates:

piece[

'year

'] =date[0]

piece[

'month

'] = date[1]

piece[

'count

'] =month_count

month_count = 1

return

以下是html**:

1

<

aside

class

="col-md-4"

>

2<

div

class

="widget widget-recent-posts"

>

3<

h3 class

="widget-title"

>recent posts

h3>

4<

ul>56

<

li>

7<

a href

>}

a>8li

>910

ul>

11div

>

1213

<

div

class

="widget widget-archives"

>

14<

h3 class

="widget-title"

>archives

h3>

15

16<

ul>

1718

<

li>

19<

a href

="#"

>}年

a>

20<

ul>

2122

<

li>

23<

a href

="#"

>}月(})

a>

24li

>

2526

ul>

27li

>

2829

ul>

30div

>

3132

<

div

class

="widget widget-category"

>

33<

h3 class

="widget-title"

>category

h3>

34<

ul>

3536

<

li>

37<

a href

="#"

>}(})

a>

38li

>

3940

ul>

41div

>

4243

<

div

class

="widget widget-category"

>

44<

h3 class

="widget-title"

>tags

h3>

45<

ul>

4647

<

li>

48<

a href

="#"

>}

a>

49li

>

5051

ul>

52div

>

53aside

>

view code

以上就是側欄開發的過程,邏輯還是比較簡單的,主要是熟悉django的使用,希望對大家在學習django過程中有所幫助。

Django開發部落格 RESTful

1.介紹 restful api是指符合rest風格的web介面 具體來說就是將所有被請求的實體當作資源,通過http自帶的方法 get,head,post,put,delete 來進行對應的增刪改查等操作。比如 獲取使用者列表 get user 獲取id為1的使用者資源 get user 1 建立...

django 開發部落格2

在models.py裡建乙個文章表,新增 如下圖 使用imagefield需要安裝pillow,pip install pillow就可以了,處理要安裝pillow,django模型中的imagefield和filefield的upload to選項是必填項,所有要存放到指定的路徑下,同時還要配置m...

使用django開發最簡單部落格程式

2 實驗平台 mandriva 2008 sqlite3 django1.0 4 建立project django admin.py startproject demo 5 修改demo settings.py檔案中的資料庫鏈結項 database engine sqlite3 database n...