提供您的問題的Apt用戶名!
您可以創建一個context processor,提供了默認的頭像,以每個模板,只需確保背景處理器緩存圖像
settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
...
'myapp.context_processors.default_avatar',
...
)
MYAPP/context_processors.py
from django.core.cache import cache
def default_avatar(request):
default_avatar = cache.get('default_avatar', False)
if not default_avatar:
default_avatar = UsrAvatar.object.get(id='0')
return {
'default_avatar' : default_avatar
}
現在TEM板變量「default_avatar」在每一個模板可供選擇:
{% if usr_avatar %}
{{ usr_avatar }}
{% else %}
{{ default_avatar }}
{% endif %}
或者只使用緩存原始查詢:
try:
usr_avatar = UsrAvatar.objects.get(user=request.user.id)
except UsrAvatar.DoesNotExist:
usr_avatar = cache.get('default_avatar', False)
if not usr_avatar:
usr_avatar = UsrAvatar.objects.get(id='0')
但最後,它可能是更好的避免飼養數據庫中的默認頭像,而不是像上面那樣編寫一個上下文處理器,而不是從數據庫中獲取默認頭像,只需要在圖像上有一個靜態url
from django.conf import settings
def default_avatar(request):
return {
'default_avatar' : '%simages/default_avatar.jpg' % settings.STATIC_URL
}
+1很酷,想弄明白。 – pcx
@pastylegs靜態鏈接解決方案將如何看起來像?謝謝! – avatar
好吧,任何靜態媒體都是由你的網絡服務器提供的,所以你所做的只是提供你要用作默認化身的圖像的路徑,所以在上下文中處理器只需將服務器上的路徑返回到默認值圖像頭像 –