Как исправить страницу не найдено 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',
Надеюсь, что получится!