Django приложение 404 ошибка не распознает новые приложения url и views

Привет Я пытаюсь создать свой первый проект Django и испытываю проблемы с тем, чтобы заставить приложение работать внутри моего проекта Django. Я просто пытаюсь отобразить url-код 8000/home1/hello/ для отображения основного текста "hello world", но не могу этого сделать. Я продолжаю получать этот код ошибки:

"Используя URLconf, определенный в web3.urls, Django попробовал эти шаблоны URL, в таком порядке:

admin/ Текущий путь, home1/hello, не соответствует ни одному из этих путей."

Вот что я сделал:

  1. создал проект django под названием web3
  2. создал приложение под названием home1 и добавил файл urls.py в это приложение
  3. обновите папку settings.py в INSTALLE_APPS, чтобы в ней появился файл 'home1.apps.Home1Config',
  4. home1 > urls.py включает этот код:

from django.urls import path from . import views

urlpatterns = [
    path('hello/', views.hello_world, name="hello_world"),
]

  1. home1>views.py включает этот код:

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

def hello_world(request):
    return HttpResponse("you finally did it justin")

6.web3> urls.py содержит такой код:

from django.contrib import admin
from django.urls import path, include
from home1.views import hello_world  # Import the hello_world view function


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('home1.urls')),
]

  1. Я уверен, что мой набор файлов верен, поскольку я использовал основной код для создания файлов (django-admin startproject web3) и (python manage.py startapp home1)

Я совсем запутался в этом вопросе... Любая помощь будет очень признательна!!!

Путь "home1/hello/" не существует на вашем сервере. Существуют только "hello/" и "admin/".

Распространено заблуждение, что если включить URLconf в корневой URLconf, например, так:

urlpatterns = [
    #•••Rest of code•••
    path('', include('home1.urls')),
]

Что все маршруты из этого приложения будут начинаться с названия приложения - например, "home1" в приведенном выше примере.

Это не так. Чтобы существовало базовое имя, вы должны указать базовое имя.

urlpatterns = [
    #•••Rest of code•••
    path('home1/', include('home1.urls')),
]

Теперь все маршруты из этого приложения будут начинаться с "home1".

Путь "home1/hello/" не существует на вашем сервере. Существуют только "hello/" и "admin/".

Распространено заблуждение, что если включить URLconf в корневой URLconf, например, так:

urlpatterns = [
    #•••Rest of code•••
    path('', include('home1.urls')),
]

Что все маршруты из этого приложения будут начинаться с названия приложения - например, "home1" в приведенном выше примере.

Это не так. Чтобы существовало базовое имя, вы должны указать базовое имя.

urlpatterns = [
    #•••Rest of code•••
    path('home1/', include('home1.urls')),
]

Теперь все маршруты из этого приложения будут начинаться с "home1".

Основная проблема заключается в том, что шаблон URL home1/hello/ не совпадает, потому что web3/urls.py включает home.urls в корневой путь URL, это означает, что home1/hello/ будет фактически сопоставлен как hello/ из корня

Чтобы исправить это, необходимо выполнить следующие действия:

  • убедитесь, что структура вашего проекта выглядит следующим образом:
web3/
    manage.py
    web3/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    home1/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
        urls.py
        migrations/
            __init__.py

  • убедитесь, что home1 добавлено к INSTALLED_APPS
  • ваша home1/urls.py должна выглядеть следующим образом :
from django.urls import path
from . import views

urlpatterns = [
    path('hello/', views.hello_world, name='hello_world'),
]
  • включите home1.urls в web3/urls.py и используйте home1/ в качестве префикса:
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('home1/', include('home1.urls')),  
]

и, наконец, ваша home1/views.py должна выглядеть так:

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

def hello_world(request):
    return HttpResponse("you finally did it justin")

Надеюсь, это поможет вам.

Основная проблема заключается в том, что шаблон URL home1/hello/ не совпадает, потому что web3/urls.py включает home.urls в корневой путь URL, это означает, что home1/hello/ будет фактически сопоставлен как hello/ из корня

Чтобы исправить это, необходимо выполнить следующие действия:

  • убедитесь, что структура вашего проекта выглядит следующим образом:
web3/
    manage.py
    web3/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    home1/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
        urls.py
        migrations/
            __init__.py

  • убедитесь, что home1 добавлено к INSTALLED_APPS
  • ваша home1/urls.py должна выглядеть следующим образом :
from django.urls import path
from . import views

urlpatterns = [
    path('hello/', views.hello_world, name='hello_world'),
]
  • включите home1.urls в web3/urls.py и используйте home1/ в качестве префикса:
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('home1/', include('home1.urls')),  
]

и, наконец, ваша home1/views.py должна выглядеть так:

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

def hello_world(request):
    return HttpResponse("you finally did it justin")

другие вещи, которые приходят мне на ум:

  • найдите опечатки в именах файлов, функций и конфигурации
  • перезапустите сервер, чтобы убедиться, что все изменения загружены
  • запустите встроенную проверку системы django, чтобы выявить все проблемы: python manage.py check
  • иногда браузеры кэшируют старые ответы, поэтому очистка кэша или использование окна инкогнито может помочь
  • .
  • используйте url resolver от django для проверки правильности настройки шаблона url Добавьте этот код в одно из ваших представлений временно для отладки:
from django.urls import resolve
print(resolve('/home1/hello/'))

Надеюсь, это поможет вам.

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