簡體   English   中英

如何管理 Django 項目中多個應用程序的模板和靜態文件?

[英]How to manage templates and static files for multiple apps in a Django project?

現在,我在同一個項目中運行了 2 個應用程序。 對於前端,我使用的是 Angular,所以理想情況下,我希望將所有這些放在一個地方。

但是,Django 的模板和靜態文件的處理方式是將它們放置在應用程序的文件夾中。

將這些放在一個位置的正確方法是什么? 我不需要在我的每個應用程序文件夾中都有模板和靜態文件夾,因為我的前端使用了一個框架。

例如:我的urls.py 中有這個

url(r'^$', TemplateView.as_view(template_name='base.html')),

如果我將 base.html 文件放在以下任一位置,這將起作用:

  • myapp1/模板/
  • myapp2/模板/

那么,做這種事情的傳統正確方法是什么?

Django 靜態設置

您可以使用靜態設置解決此問題,將所有靜態相關文件放入您需要的靜態文件夾中,例如示例

project/static/app1/css/style.css
project/static/app2/css/style.css 

設置.py

import os
def root(folder):
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), '..',folder)

STATIC_ROOT = root('staticstorage')
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
    root('static'),
)

網址.py

from django.conf.urls.static import static
from django.conf import settings
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

確保你有朗姆酒python manage.py collectstatic

在您的模板文件夾中

基本文件

<!DOCTYPE html>
<html lang="en">
    <head>
        <script src="/static/app1/js/jquery-1.10.1.min.js"></script>
    </head>
    <body>
        
    </body>
</html>

base2.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <script src="/static/app2/js/jquery-1.10.1.min.js"></script>
    </head>
    <body>
        
    </body>
</html>


{% extends 'base1.html'%}
<h1>Hello world app1 </h1


{% extends 'base2.html'%}
<h1>Hello world app2 </h1>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM