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, потому что он не может найти его в любом ожидаемом месте.