開發環境配置
需要下面幾個步驟
1. 在app目錄下創建static目錄,將靜態文件和相關文件夾放到此目錄下,如your_app/static/img等
2. 確保settings.py中的INSTALLED_APPS中包含django.contrib.staticfiles
3. 設置settings.py中的STATIC_URL的值為“/static/”
4. 在模版中使用{{ STATIC_URL }}作為靜態文件路徑前綴。比如純在圖片文件your_app/static/img/logo.png,那么應用代碼為<img src=”{{ STATIC_URL }}img/logo.png”>
5. 渲染模版的Context對象需要換成RequestContext,否則模版中無法引用到STATIC_URL對應的值。
上面的操作步驟參見官方文檔:https://docs.djangoproject.com/en/dev/howto/static-files/
特別注意:按照上述設置,settings.py中的DEBUG選項必須設置為True,否則'/static/'無法映射到靜態文件目錄。參見這里:http://stackoverflow.com/a/4566907/1114397
生產環境配置
我的發布環境是apache,這里只介紹相關配置。
使用apache的靜態發布配置,而不使用django的配置,這也是django推薦的方式,因為django認為靜態文件配置的方法交給服務器,會更有效。你所需要做的就是在apahce的配置文件中添加一個alice,如下
Alias /static "/your_wsgi/your_app/static"
# 注意結尾都沒有斜杠,全路徑也沒有。
# 如果alias后面的值有反斜杠結尾,那么全路徑也需要有,保持一致
“/static”對應django settings.py中配置的STATIC_URL的值。然后添加directory選項,配置相關目錄的權限。Apache 2.4版本開始,對directory配置做出了調整,所以這里需要注意,如下:
Apache v2.4及以上版本,
<Directory "/your_wsgi/your_app/static ">
Require all granted
</Directory>
Apache v2.4以下版本
<Directory "/your_wsgi/your_app/static ">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
注意上面紅色部分。
Tips:如果訪問靜態圖片遇到403錯誤,此時說明路徑配置成功,離成功不遠了。只是路徑權限沒有配置正確,這時可以看看apahce錯誤日志,如果出現“client denied by server configuration”,說明是directory的權限沒有配置正確,可以查看自己的apache版本,然后做出響應配置。
希望本文對你有用!