TemplateDoesNotExist в / board /boards - PullRequest
       0

TemplateDoesNotExist в / board /boards

0 голосов
/ 28 ноября 2018

Я получил эту ошибку во время проекта Python DjangoЯ не понимаю, почему шаблон не подключается.Пожалуйста, дайте мне знать, что это за ошибка, и дайте мне знать, как ее исправить.Как я могу это сделать?Прикрепите изображение ошибки. введите описание изображения здесь

settings.py

INSTALLED_APPS = [
    --- skip ---
    board.apps.BoardConfig',
]

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',
            ],
        },
    },
]

Это мои под-списки проектов

/mysite
    /board
        /migrations
        /templates
            /board
                board_list.html
                board_detail.html
                search.html
        __init__.py
        admin.py
        apps.py
        forms.py
        models.py
        tests.py
        urls.py
        views.py
    /mysite
        __init__.py
        settings.py
        urls.py
        views.py
        wsgi.py
    /static
        css
        js
        image
    /templates
        base.html
        main.html
    db.sqlite3
    manage.py

/ mysite / mysite / urls.py

from django.contrib import admin
from django.conf.urls import url, include
from .views import MainHome

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', MainHome.as_view(), name='main'),
    url(r'^board/', include('board.urls', namespace='board'),
]

/ mysite / board / urls.py

from django.conf.urls import url
from .views import *
from mysite.views import MainHome

app_name = 'board_app'

urlpatterns = [
    url(r'^$', MainHome.as_view(), name='main'),
    url(r'^search/$', SearchFormView.as_view(), name='search'),
    url(r'^boards/$', BoardList.as_view(), name='board_list'),
    url(r'^boards/(?P<slug>[-\w]+)/$', BoardDetail.as_view(), name='board_detail'),
]

/ mysite / borad / views

from .models import Board
from django.views.generic import ListView
--- skip ---

class BoardList(ListView):
    model = Board
    template_name = 'board_list.html'
    content_object_name = 'boards'
    paginate_by = 10

--- skip ---

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Ваш шаблон находится в директории форума.И имя шаблона вашей модели не ссылается на этот путь.

В вашем class BoardList добавьте template_name = 'board/board_list.html'

0 голосов
/ 28 ноября 2018

Я бы попробовал системный подход:

  • в settings.py, определите TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')
  • Учитывая структуру каталогов, имя вашего приложения доска не доска_app .Итак, установите INSTALLED_APPS = [..., 'board' ].Кроме того, я не понимаю в вашем коде, почему вы ссылались на board.apps.BoardConfig вместо board, может быть, я что-то упустил
  • ШАБЛОНЫ = [{.... 'DIRS': [TEMPLATE_DIR] , ...}] сделает вещи более заметными
  • в urls.py приложения доски, установите app_name=board
  • в views.py, если вы используете соглашения об именах Django для файлов / каталогов, вам не нужно указывать имя шаблона для представлений на основе классов.Удалите template_name = 'board_list.html, если ваш шаблон находится в board/templates/board/board_list.html

Кроме того, перезагрузите сервер после внесения этих изменений.Это помогает?

0 голосов
/ 28 ноября 2018

В /mysite/borad/views у вас есть:

template_name = 'board_list.html'

Замените его на:

template_name = 'board/board_list.html'

Поскольку board_list.html находится внутри templates/board.

Редактировать

В settings.py у вас есть:

'DIRS': [os.path.join(BASE_DIR, 'templates')],

, что означает, что Django будет искать шаблоны в вашей папке mysite/templates.Удалите его так:

'DIRS': []

, чтобы Django по умолчанию просматривал каталог templates/ для каждого установленного приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...