TemplateDoesNotExist в /blog/create/

Не уверен, опечатка это или нет... Я не понимаю, почему я получаю эту ошибку:

введите описание изображения здесь

Получение ошибки TemplateDoesNotExist? Странно, потому что когда я нажимаю на создать пост, он переводит меня на ".../blog/create/"

может кто-нибудь помочь, пожалуйста!

"

base.hmtl '''

Это заголовок {% include 'snippets/header.html' %}
<style type="text/css">
    .main{
        min-height: 100vh;
        height: 100%;
    }
</style>
<div class="main">
    {% block content %}

    {% endblock content %}
</div>


{% include 'snippets/footer.html' %}

**create.html (внутри blog/Template/blog) **

{% extends 'base.html' %}

{% block content %}

    <p>Create a new blog...</p>

{% endblock content %}

** urls.py (внутри папки blog)**

>
from django.urls import path
from blog.views import(
    
    create_blog_view,
)

app_name = 'blog'

urlpatterns = [
    path('create/', create_blog_view, name="create"),
]

urls.py (в папке mysite)

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from personal.views import (
    home_screen_view,
)

from account.views import (
    registration_view,
    logout_view,
    login_view,
    account_view,
)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home_screen_view, name="home"),
    path('register/', registration_view, name="register"),
    path('blog/', include('blog.urls', 'blog')),
    path('logout/', logout_view, name="logout"),
    path('login/', login_view, name="login"),
    path('account/', account_view, name="account"),

]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

views.py (внутри блога)

from django.shortcuts import render
from blog.models import BlogPost

def create_blog_view(request):
    return render(request, "blog/create.html", {})

home.html (внутри personal/Template/snippets)

{% extends 'base.html' %}

{% block content %}

<style type="text/css">
    @media (max-width: 768px) { 
        .right-column{
            margin-left: 0px;
        }
    }

    @media (min-width: 768px) { 
        .right-column{
            margin-left: 20px;
        }
    }

    .blog-post-container{
        background-color: #fff;
        margin-bottom: 20px;
        width: 100%;
    }
    .create-post-bar{
        background-color: #fff;
        margin-bottom:20px;
    }

    .left-column{
        padding:0px;
    }

    .right-column{
        padding:0px;
    }

</style>

<div class="container">
    <div class="row">
        
        <!-- create post bar -->

        <div class="create-post-bar d-lg-none col-lg-7 offset-lg-1">
            <a href="{% url 'blog:create' %}">Create post</a>
        </div>

        <!-- end create post bar-->

        <!-- Blog feed -->

        <div class="left-column col-lg-7 offset-lg-1">
            <div class="blog-post-container">
                <p>Thingy</p>
            </div>

            <div class="blog-post-container">
                <p>Thingy</p>
            </div>

            <div class="blog-post-container">
                <p>Thingy</p>
            </div>
        </div>

        <!-- end Blog feed-->

        <!-- create post column -->

        <div class="right-column col-lg-3 d-lg-flex d-none flex-column">
            <div class="create-post-bar">
                <p>Stuff</p>
                <p>Stuff</p>
                <p>Stuff</p>
                <a class="p-2 btn btn-outline-primary" href="{% url 'blog:create' %}">Create post</a>
            </div>
        </div>

        <!-- end create post column-->
    </div>
</div>



{% endblock content %}

"

Я ожидал, что он перенаправит меня на новую страницу, но он показывает ошибку

Очевидно, ваше приложение не смотрит в папку шаблонов blog. Оно смотрит только в папки шаблонов personal и папки шаблонов account. Вы можете проверить это на прилагаемом рисунке под template-loader postmortem. Обычно это означает, что приложение установлено неправильно.

Для этого есть много причин, среди которых:

  • Возможно, вы разместили его в неправильном каталоге. Приложение должно находиться по адресу ./src/. Похоже, что это не так, поскольку url.py работает правильно.
  • Возможно, вы забыли сохранить settings.py после добавления приложения blog.
  • Возможно, дело в вашей виртуальной среде. Перезагрузка и команда migrate могут помочь.

Иначе вы могли где-то изменить каталог шаблонов приложения.

У вас есть конфигурация

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

Итак, вам нужно иметь каталог Templates в вашем базовом каталоге, а не внутри каждого приложения, это должно быть

Template/blog/create.html

и не

blog/Template/blog/create.html

При включенном APP_DIRS Django ищет шаблоны внутри каждой подпапки app /templates/. Строчные, множественное число.

У вас Template - неправильный случай, не хватает s в конце. Так что да, шаблон не существует для Django, потому что он не может найти его в любом ожидаемом месте.

Вернуться на верх