Как исправить страницу не найдено 404 в django?

Здравствуйте, я создал свой первый сайт и при попытке запустить страницу товара я получаю эту ошибку Страница не найдена (404) Метод запроса: GET URL запроса: http://127.0.0.1:8000/products. Используя URLconf, определенный в myshop.urls, Django попробовал эти шаблоны URL, в таком порядке: admin/ Текущий путь, products, не совпал ни с одним из них. Вы видите эту ошибку, потому что в вашем файле настроек Django стоит DEBUG = True. Измените это значение на False, и Django отобразит стандартную страницу 404.

как я могу решить эту проблему? Вот мой код...

код страницы моих просмотров

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


def index(request):
    return HttpResponse('Hello world')


def new(request):
    return HttpResponse('New Products')

productsurls code

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
    path('new', views.new)
]

myshopurls

"""myshop URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""  
from django.contrib import admin
from django.urls import path, include

urlpatterns = {
    path('admin/', admin.site.urls),
    path('products/', include('products.urls'))
}

Вы должны включить приложение в раздел INSTALLED_APPS в файле settings.py.

Таким образом, ваш файл settings.py должен выглядеть следующим образом

INSTALLED_APPS = [
    # Built In Apps
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # User Defined Apps
    'product.apps.ProductConfig',
]

Совет - Если вы запутались, как включить имя под установленными приложениями. Это должно выглядеть так

<myapp>.apps.<name_of_class_in_myapp/apps.py_file>

Вообще перейдите в папку app -> apps.py файл и проверьте имя класса. Оно будет выглядеть следующим образом

from django.apps import AppConfig


class ProductConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'product'

Вам нужно имя этого класса. ProductConfig.


Примечание - Локальные приложения всегда должны добавляться снизу, потому что Django выполняет параметр INSTALLED_APPS сверху вниз. Мы хотим, чтобы основные приложения Django были доступны до нашего приложения.

Причина перечисления приложения как

'product.apps.ProductConfig',

это потому что это лучшая практика и поможет в будущем, если вы решите использовать Django Signals.

Скорее всего, вы столкнулись с этой проблемой, потому что не включили ваше приложение "products" в файл "settings.py".

-> После проверки вашего кода я могу сделать вывод, что "myshop" - это ваш проект, а "products" - это ваше приложение.

Итак, вам нужно зайти в файл settings.py, под которым вы найдете список "INSTALLED_APPS".

Внутри INSTALLED_APPS -> Вы должны будете включить свое приложение.

Перейдите в файл "apps.py" приложения "products" и скопируйте имя класса "config".

После этого в файле settings.py нужно написать 'products.apps.(вставьте имя класса config)'.

Скорее всего, имя вашего класса конфигурации будет "ProductsConfig" -> Таким образом, вам придется написать 'products.apps.ProductsConfig',

Надеюсь, что получится!

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