Как импортировать 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'.

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