Вобщем я попытался создать свой первый сайт на 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 (Да, подключил), пробовал менять название функции и уже не знаю что делать.