@Dimarin
Начинающий python програмист

Django Вроде не там ищет шаблон или неправильно прописана функция, что делать?

Вобщем я попытался создать свой первый сайт на Django(Django версия 3.0.5 Python версия 3.8.2). Курс был достаточно устаревшим но все мелкие проблемы быстро решались.
Структура папок:

mysite\

mainApp\

__pycache__
migrations\

__pycache__

mysite\

__pycache__
tamplates

Я стал делать главную страницу,
from django.contrib import admin
from django.urls import path, include 

urlpatterns = [
    path(r'admin/', admin.site.urls),
   <b>path(r'^$', include('mainApp.urls')),</b>
    ]

Это файл urls.py выделена та ссылка которая по идее должна открывать главную страницу, она запускает другой файл urls.py в папке mainApp
from django.urls import path, include 
from . import views

urlpatterns = [
	path('^$', views.index, name='index')
]

это вызывает функцию index из файла vievs.py
from django.shortcuts import render

def index(request):
	return render(request, 'mainApp/homePage.html')

И тут начинается самое интересное. Когда я запускаю сайт на локальном сервере выдает 404 ошибку, хотя по идее если при вводе path(r'^$')ковычки должны считаться пустыми, но в новой версии нужно просто оставить их пустыми(Что я и сделал). Но это привело к ошибкам
TemplateDoesNotExist at /
mainApp/homePage.html
Template-loader postmortem
Django tried loading these templates, in this order:

Using engine django:

django.template.loaders.app_directories.Loader: C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\templates\mainApp\homePage.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\templates\mainApp\homePage.html (Source does not exist)

Traceback
C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py in inner
response = get_response(request) …
▶ Local vars
C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py in _get_response
response = self.process_exception_by_middleware(e, request) …
▶ Local vars
C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
E:\Projects\mysite\mainApp\views.py in index
return render(request, 'mainApp/homePage.html') …
▶ Local vars
C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\shortcuts.py in render
content = loader.render_to_string(template_name, context, request, using=using) …
▶ Local vars
C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\template\loader.py in render_to_string
template = get_template(template_name, using=using) …
▶ Local vars
C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\template\loader.py in get_template
raise TemplateDoesNotExist(template_name, chain=chain) …
▶ Local vars

Я попробовал обойти проблему а не решить её и просто вместо того что бы оставлять одинарные ковычки пустыми я вписал туда 'main'. Но это не помогло, когда я запускал уже 127.0.0.1:8000/main выдавалась 404 ошибка и в списке существующих страниц писалось это:
admin/
main main [name='index']
The current path, main/, didn't match any of these.
Я подумал что ошибка скорее всего в функции index я посмотрел и не понял в чём проблема. Вычитал что может быть проблема связанна с тем что django не может найти html файлы в папке templates.
В файле settings.py в TEMPLATES_DIRS Прописал os.path.join(BASE_DIR, 'templates'
Проверил что в начале файла стоит import os.
После этого стало выдавать 3 ошибки

Using engine django:

django.template.loaders.filesystem.Loader: E:\Projects\mysite\templates\mainApp\homePage.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\templates\mainApp\homePage.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\templates\mainApp\homePage.html (Source does not exist)

В Traceback вроде всё тоже самое

И больше я ничего не смог сделать кроме как проверить правильность написания названий, но это ни к чему не привело.
В INSTALLED_APPS я так же проверил подключил ли я папку mainApp (Да, подключил), пробовал менять название функции и уже не знаю что делать.
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vladis005
Начинающий веб разработчик
Проверьте как вы подключили темплейты. Либо оставить ковычки не пустыми а вставить в них /. А еще лучше обновите django до версии 3
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы