Как импортировать views.py в файл urls моего проекта
Я работаю с Django и пытаюсь сделать систему входа
Приложение должно предоставить простое представление 'Login System', но my_app/urls.py не может импортировать методы из my_app/views.py.
Название моего приложения - аутентификация
Вот my-project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('authentication.urls')),
]
Вот my_app/urls.py.
from django.contrib import admin
from django.urls import path, include
from authentication import views
urlpatterns = [
path('', views.home, name="home"),
path("signup", views.signup, name="signup"),
path("signin", views.signup, name="signin"),
path("signout", views.signup, name="signout"),
]
Вот my-app/views.py
from django.shortcuts import render
from django.http import HttpResponse
def home(request):
return render(request, "authentication/index.html")
Я также добавил это в my-project/settings.py
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR /"templates"],
'APP_DIRS': True,
И я получаю следующую ошибку
TemplateDoesNotExist at /
authentication/index.html
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.2.9
Exception Type: TemplateDoesNotExist
Exception Value:
authentication/index.html
Exception Location: C:\Users\julie\Login System\venv\lib\site-packages\django\template\loader.py, line 19, in get_template
Python Executable: C:\Users\julie\Login System\venv\Scripts\python.exe
Python Version: 3.9.5
Python Path:
['C:\\Users\\julie\\Login System',
'c:\\python39\\python39.zip',
'c:\\python39\\DLLs',
'c:\\python39\\lib',
'c:\\python39',
'C:\\Users\\julie\\Login System\\venv',
'C:\\Users\\julie\\Login System\\venv\\lib\\site-packages']
Проблема связана с settings.py, попробуйте его.
import os
'DIRS': [os.path.join(BASE_DIR, 'templates')]
01) my-project/urls.py
urlpatterns = [
path('', include('my-app.urls')),
# .....
]
02) my-app/views.py
def home(request):
return render(request, "authentication/index.html")
03) my-app/urls.py
urlpatterns = [
path('', views.home, name="home"),
# .....
]
(окончательный) my-app (структура папок и файлов):
my-app:
|-- templates
|-- authentication
|-- index.html
|-- urls.py
|-- views.py
|...
nb: мыслить просто
Ваши представления находятся в файле views.py в модуле 'my_apps', правильно ли я понимаю? Если это так, вы должны импортировать представления из этого модуля, а не из модуля 'authentication'
В вашем my_app/urls.py попробуйте изменить строку,
from authentication import views
to
from . import views
и посмотрите, работает ли он. Точка обозначает каталог, содержащий urls.py, т.е. 'my_apps'.