2012-06-23 38 views
10

我如何在開發中服務favicon.ico?我可以在我的urlconf中添加一個路由,但我不想讓這條路由繼續到生產環境。有沒有辦法在local_settings.py中做到這一點?在開發中的Django favicon.ico?

回答

3

docs

from django.conf.urls.static import static 

urlpatterns = patterns("", 
    # Your stuff goes here 
) + static('/', document_root='static/') 

似乎沒有要服務於一個單一的方式靜態文件,但至少這個幫助函數是一個只有在DEBUG = True時才起作用的包裝。

-1

那麼,你可以創建你自己的loader.py文件,它加載你想覆蓋的設置。 加載這個文件應該是這樣的:

try: 
    execfile(os.path.join(SETTINGS_DIR, 'loader.py')) 
except: 
    pass 

,並在settings.py的末尾添加。 這個設置不應該被提交到生產服務器,只應該出現在開發機器上。如果您使用的是git,請將loader.py添加到.gitignore中。

15

最簡單的方法是隻把它放在你的靜態目錄與其他靜態的媒體,然後在你的HTML指定其位置:

<link rel="shortcut icon" type="image/png" 
      href="{% static 'images/favicon.ico' %}"/> 

我老的回答是:

可以設置在您的urls.py中輸入一個條目,並檢查debug是否爲真。這將阻止它在生產中服務。我認爲你可以做類似靜態媒體。

if settings.DEBUG: 
    urlpatterns += patterns('', 
     (r'^favicon.ico$', 'django.views.static.serve', {'document_root': '/path/to/favicon'}), 
    ) 

你也可以只服務於圖標從您的視圖:

from django.http import HttpResponse 

def my_image(request): 
image_data = open("/home/moneyman/public_html/media/img/favicon.ico", "rb").read() 
return HttpResponse(image_data, mimetype="image/png") 
+1

我標誌着這是正確的,但仔細觀察它實際上並沒有正常工作。 django.views.static.serve只會提供目錄,而不是單個文件。 – knite

1

這爲我工作:

from django.conf.urls.static import static 

... 

if settings.DEBUG: 
    urlpatterns += static(r'/favicon.ico', document_root='static/favicon.ico')