Ошибка ModuleNotFoundError в django для python

При выполнении моего кода я получаю следующую ошибку:

  File "C:\Users\emanull\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'current_datetime'

Мой файл views.py:

from django.shortcuts import render
from django.http import HttpResponse
from datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

Мой файл urls.py:

from django.contrib import admin
from django.urls import include, path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('time/', include('views.current_datetime'))
]

У вас ошибка в файле views.py. from datetime неправильно, поскольку вы не импортируете ничего из пакета datetime.

Правильное использование в вашем случае было бы import datetime.

Вторая ошибка заключается в том, как вы используете URL-адреса. Это должно быть:

from django.contrib import admin
from django.urls import include, path
from . import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('time/', views.current_datetime, name='current-datetime'),
]

Для дальнейшего чтения смотрите документацию Django для URLs.

Мой файл views.py:

from django.shortcuts import render
from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

Мой файл urls.py:

from django.contrib import admin
from django.urls import include, path
from gogle import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('time/', views.current_datetime)
]
  • В своем views.py вы можете либо:

    from datetime import datetime и использовать datetime.now()

    или

    import datetime и использовать datetime.datetime.now()

  • В вашем urls.py используйте абсолютный импорт вместе с правильным синтаксисом согласно docs (include ожидает локальный urls.py а не представление).

    .

Когда Django встречает include(), он отрезает любую часть URL, которая соответствует этому моменту, и отправляет оставшуюся строку. URL до этого момента и отправляет оставшуюся строку в включенный URLconf для дальнейшей обработки.

Две вещи, которые вам нужно сделать.

  1. исправьте следующую строку в вашем коде импорта, замените from datetime на import datetime

  2. убедитесь, что у вас есть пустой файл init.py, расположенный в той же папке, где находится views.py, и затем вы можете сделать как показано ниже

    .
from . import views

urlpatterns = [
    path('time/', include('views.current_datetime'))
]

Надеюсь, это решит вашу проблему.

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