Как использовать шаблон из проекта в другом приложении? - PullRequest
0 голосов
/ 11 января 2020

Я думаю об организации всех моих шаблонов внутри моего проекта: scolarte.

Как подсказывает этот вопрос:

Как лучше всего разместить шаблоны в django проекте?

Если вы не можете придумать очевидное место для размещения ваших шаблонов, мы рекомендуем создать каталог шаблонов в вашем проекте Django (т. е. в каталог mysite, который вы создали в главе 2, если вы следовали нашим примерам).

Но мне нужно вызвать его из другого приложения. Представление вызывается, но появляется ошибка:

TemplateDoesNotExist at /cuentas/ingreso/
scolarte/templates/scolarte/registration/signup.html

Я даже пытался указать полный путь к шаблону в папке проекта:

role / views.py:

class SignUpView(TemplateView):
    template_name = 'scolarte/templates/scolarte/registration/signup.html'
    # don't work neither
    #template_name = 'templates/scolarte/registration/signup.html'
    #template_name = 'scolarte/registration/signup.html'
    #template_name = 'registration/signup.html'

role / urls.py:

from django.urls import include, path
from .views import SignUpView, SellerSignUpView, ClientSignUpView


urlpatterns = [

    path('ingreso/', SignUpView.as_view(), name='signup'),
]

scolarte / urls.py

urlpatterns = [
    path('', include('core.urls')),
    path('cuentas/', include('roles.urls')),
    path('admin/', admin.site.urls),
]

Мое приложение оформлено следующим образом:

roles
    |_migrations
    |_templates
    ...
    |_urls.py
    |_views.py
scolarte   #project name
    |_templates
      |_scolarte
        |_registration
          |_signup.html
    |_setting.py
    |_urls.py

setting.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

ОБНОВЛЕНИЕ 1:

enter image description here

приложение ролей :

enter image description here

** приложение ролей - просмотр .py **:

enter image description here

ОБНОВЛЕНИЕ 2:

enter image description here

1 Ответ

1 голос
/ 11 января 2020

Ваш стандартный путь к шаблону неверен согласно стандартному соглашению Django, но позвольте мне сначала показать вам, как это исправить. Что вы хотите сделать, это убедиться, что в settings.py у вас есть эти настройки. Это из Django 3.0 fre sh проекта создания.

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))    
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Если вы используете их, и следуйте предложенной структуре каталогов:

scolarte
|_scolarte
 |_settings.py
 |_urls.py
  (etc..)
|_templates
 |_scolarte
  |_registration
   |_signup.html

Тогда вы можете использовать с этим путем:

template_name = 'scolarte/registration/signup.html'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...