Django靜態檔案輸出

技術小胖子發表於2017-11-09

一直很糾結的一個問題,網路上也有很多方案,但總感覺不完美.

之前的方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1 .  在setting.py中
    STATIC_ROOT = `static/`
    STATIC_URL = `static/`
     
2.  在模板頁面中
    <link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.css">
    <script type="text/javascript" src="{{ STATIC_URL }}js/bootstrap.js"></script>
     
3.  在urls.py的配置中
    from django.conf.urls.static import static
    urlpatterns = patterns(``,
        url(r`^admin/`, include(admin.site.urls)),
        (r`^$`, latest_books),
    ) + (static(settings.STATIC_URL, document_root=settings.STATIC_ROOT))
 
4.  在views.py對應的輸出檢視中
return render_to_response(`index.html`, {
        `book_list`: book_list,
        `STATIC_URL`: STATIC_URL,
    })

雖然能解決一定問題但是每一回都需要在response中新增STATIC_URL,非常煩躁


結合最近的專案部署以及開發深入,總結完美方案一套

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.  在settings.py中
STATIC_URL = `/static/`
STATIC_ROOT = `/static/`
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, `static`).replace(`\`,`/`),
)
 
2.  在url.py中(總路由 即全域性路由出口)
urlpatterns = patterns(``,
    url(r`^admin/`, include(admin.site.urls)),
    url(r`^app/`, include(`app.urls`)),
) + (static(settings.STATIC_URL, document_root=settings.STATIC_ROOT))
 
3.  在模板檢視中
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.css">
<script type="text/javascript" src="{{ STATIC_URL }}js/bootstrap.js"></script>

這樣在views中的每個檢視方法就不需要重複response STATIC_URL了

     本文轉自My_King1 51CTO部落格,原文連結:http://blog.51cto.com/apprentice/1532733,如需轉載請自行聯絡原作者


相關文章