Django во всех приложениях

#python #django

#Python #Django

Вопрос:

Я создаю довольно большой проект django, для которого потребуются две вещи. 1) Мне нужно, чтобы несколько файлов шаблонов были доступны во всех приложениях. 2) Мне нужна модель, доступная во всех приложениях. Как мне это сделать?

Что касается шаблонов, то, похоже, добавление его в директиву TEMPLATES не работает.

Что касается моделей, могу ли я иметь модели.py в папке project / project или что-то в этом роде, чтобы быть доступным для всех приложений?

Django 1.10 и Python 3.5

 TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'],
        'APP_DIRS': True,
        'OPTIONS': {
[...]
  

Комментарии:

1. для моделей вам просто нужно импортировать их в свое приложение from otherapp.models import A, B

2. Хорошо, я не понял. Спасибо.

3. Шаблоны никоим образом не ограничены приложениями, поэтому я не уверен, о чем вы здесь спрашиваете.

4. если я выполняю return render(request,"template.html") из приложения, оно ищет папку templates внутри этого приложения. Я хочу иметь template.html в project/project/templates папке, а не в project/app/templates папке.

5. Согласно документации djengo, добавив путь к DIRS: [] директиве в моем settings.py он должен добавить его в список путей поиска шаблонов. docs.djangoproject.com/en/1.10/ref/settings /…

Ответ №1:

Удалось решить эту проблему с помощью этой работы.

 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR   '/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
[...]