2017-02-04 4 views
0

прямо сейчас, у меня есть 2 приложения, работающие в одном проекте. Для front-end я использую Angular, поэтому в идеале я хотел бы объединить все это в одном месте.Как управлять шаблонами и статическими файлами для нескольких приложений в проекте Django?

Однако, как обрабатываются шаблоны Django и статические файлы, они размещаются в папках приложения.

Что было бы правильным путем объединить их в одном месте? Мне не нужно иметь шаблоны и статическую папку внутри каждой папки моего приложения, так как я использую фреймворк для моего интерфейса.

Например: у меня есть это в моей urls.py

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

Это работает, если я положил файл base.html в одно из следующих действий:

  • myapp1/шаблоны/
  • myapp2/шаблоны/

Итак, что является со правдиво правильный способ делать такие вещи?

+0

Выберите, хотите ли вы, чтобы спросить о шаблонах или статических файлах. Они обрабатываются по-разному. –

ответ

1

Джанго Статические настройки

Вы можете решить эту проблему со статическими настройками, поместить все статические файлы, связанные в статической папку с вашими потребностями, как например

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

settings.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'), 
) 

urls.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

в шаблоне папке

base.html

<!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>2 
    <body> 

    </body> 
</html> 


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


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

Можете ли вы сказать мне, откуда вы получаете «корень»? Я запустил ваш код, он говорит, что «root» не найден. Это модуль python? –

+0

О, извините, его собственная функция для создания базового каталога, я обновлю ответ, пожалуйста, проверьте его – Cadmus