我是新來的,感到困惑。我想創建一個模塊,用於跟蹤文章和博客模型的「熱門」實例。我不想觸摸文章或博客模型的代碼。這是中間件的候選人嗎?看着HttpRequest.path
?Django - 計數模型實例視圖(對於「頂級條目」應用程序)
0
A
回答
1
查看request.path的中間件很難看,因爲它引入了對用來顯示文章和博客文章的URL模式細節的依賴。如果你不介意這種耦合,那麼你可能只需保存性能點擊並在Web服務器日誌文件上進行分析即可。 (編輯:view middleware將是一個更好的選擇,因爲它給你視圖可調用和它的參數。我仍然更喜歡裝飾器的方法,因爲它不會導致不相關的視圖的開銷,但查看中間件將工作,如果你不想要觸摸博客/文章應用程序的URLconf)。
我會使用一個視圖裝飾器,你包裹object_detail視圖(或您的自定義等效)。你可以直接在URLconf中進行封裝。事情是這樣的:
def count_hits(func):
def decorated(request, *args, **kwargs):
# ... find object and update hit count for it...
return func(request, *args, **kwargs)
return decorated
而且你可以在views.py應用它:
@count_hits
def detail_view(...
或在URLconf:
url(r'^/blog/post...', count_hits(detail_view))
0
,你可以創建一個通用的打擊模型
class Hit(models.Model):
date = models.DateTimeFiles(auto_now=True)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
在你的view.py中你寫這個函數:
def render_to_response_hit_count(request,template_path,keys,response):
for key in keys:
for i in response[key]:
Hit(content_object=i).save()
return render_to_response(template_path, response)
和您感興趣的回報
return render_to_response_hit_count(request, 'map/list.html',['list',],
{
'list': l,
})
這種方法給你的權力,不僅要算命中,但時間篩選命中的歷史,則contentType等的意見on ...
由於命中表可能正在快速增長,因此您應該考慮刪除策略。
代碼未經測試
相關問題
- 1. 用於多視圖應用程序的knockoutjs模式示例
- 2. 在模塊級別公開Django應用程序的模型
- 3. Django模型實例full_clean方法,對嗎?
- 4. 模板,視圖和模型應該放在Django配置應用程序中嗎?
- 5. Django編輯模型實例
- 6. Python應用程序設計模式 - 實例必須適用於大多數其他實例
- 7. 實用程序應用程序和基於視圖的應用程序
- 8. 概念視圖模型/模型驗證的應用程序了
- 9. 跨應用程序使用django模型?
- 10. Django的查詢:與FK對象的計數數量模型實例
- 11. 從父數據實例化django模型
- 12. 如何使用頂級應用程序中的實例化信息創建低級對象?
- 13. 在Django中,由於FK在第二個(和基於視圖)模型中無法刪除模型實例
- 14. 多實例視圖模型和ViewModelLocator
- 15. 模型記錄/實例特定視圖
- 16. 應該將django模型對象實例傳遞給芹菜?
- 17. django模型foreignkey beetwen應用程序
- 18. 適用於中型應用程序的Asp.Net MVC應用程序設計模式
- 19. django應用程序的歌詞模型設計
- 20. 創建一個Django模型實例並創建另一個Django模型實例
- 21. django - 覆蓋用戶模型條目
- 22. 升級多實例web應用程序安裝程序
- 23. 如何將視圖的實例連接到模型對象? Ember.js
- 24. 我在哪裏實例化我的視圖模型對象?
- 25. Django中用於緩存模型實例(對象級緩存)的最佳框架/可重用應用程序是什麼?
- 26. 將模型的單實例傳遞到同一個模塊中的多個視圖對於不同的視圖
- 27. 模型中的字段不會出現在Django應用程序的視圖中
- 28. 基於用戶的模型實例在Django過濾admin
- 29. Django應用程序檢索其他應用程序模型的數據?
- 30. iPhone應用程序:當dissmissing模型視圖按鈕圖像在