說起這個側欄真是苦惱我很長時間,一開始以為和之前的一樣傳遞額外引數就可以了就像下面這樣:
class但是自己一想,這個只是渲染到了首頁,那如果我要是跳轉導一篇部落格的詳細頁面的時候怎麼辦,還要在部落格詳細頁面也渲染乙個category上下文引數嗎?後來的github上看了一下別人的**才恍然大悟,原來模板中的內容不只是通過上下變數進行渲染,還可以有其他的方式,乙個叫 django.template.requestcontext的類,詳細內容請看the django book第九章。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
我們接下來進行配置:
templates =[,},]
#以下是html**:-*- 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
1view code<
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
>
以上就是側欄開發的過程,邏輯還是比較簡單的,主要是熟悉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...