Страница не найдена в django, pycharm? - PullRequest
0 голосов
/ 30 мая 2020

Я работаю с проектом django для создания веб-сайта, когда я устанавливаю первый URL-адрес, он работает правильно, но когда я добавляю новый URL-адрес после products / new /, он показывает, что страница не найдена

Страница не найдена (404) Метод запроса: GET URL-адрес запроса: http://127.0.0.1: 8000 / products / new / Используя URLconf, определенный в pyshop.urls, Django попробовал эти шаблоны URL-адресов в следующем порядке:

Вот папки,

products.urls.py:

from django.urls import path
from . import views


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

views.py:

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


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


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

apps.py:

from django.apps import AppConfig


class ProductsConfig(AppConfig):
name = 'products'

pyshop. urls.py:

"""pyshop URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/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'))
]

А вот и ошибка

Страница не найдена (404) Метод запроса: GET URL-адрес запроса: http://127.0.0.1: 8000 / products / new / Используя URLconf, определенный в pyshop.urls, Django попробовал эти шаблоны URL в следующем порядке:

admin /
products /
products / new

Текущий путь, products / new /, не соответствует ни одному из них.

1 Ответ

0 голосов
/ 01 июня 2020

Примечание

Используйте имя в единственном числе вместо множественного числа для ваших приложений:

продукт вместо продуктов.


Шаблоны каталог

Сначала создайте каталог шаблонов в приложении продуктов, а затем создайте другой каталог в папке шаблонов, имя должно совпадать с именем вашего приложения (продукты).

products # app name 
   templates # templates folder
       products # again app name
          aboutme.html # here your all html pages
          mypage2.html

Просмотры. py

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


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

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

#or if you want to return html page then 
def aboutme(request):
   return render(request,'products/aboutme.html')

urls.py приложения продукта

from django.urls import path
from . import views


urlpatterns = [
path('', views.index),
path('new', views.new),
path('all-about-me/', views.aboutme,name = 'about_me'), # get rid of hard coded urls so always use name parameter to give some name to your view.  
] 

Файл urls.py проекта

Добавьте сюда все URL-адреса приложений.

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

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

Добавьте ваше приложение в настройки

INSTALLED_APPS = [
    # others goes here

    'products.apps.ProductsConfig',# your products app

]

Каталоги ваших проектов должны быть такими, как указано выше, а также код.

Вам не хватает любого вышеуказанного шага, который я описал выше и сбивает с толку в URL-адресах.

http://127.0.0.1: 8000 он показывает PageNotFound 404, потому что вы не определили ни одну индексную страницу в основном URLS.py

http://127.0.0.1: 8000 / products отображается «Hello world» (так называемый индексный просмотр).

http://127.0.0.1: 8000 / products / new отображается «Новые продукты !!!!!!!!! !!!! ' (называется новым представлением).

http://127.0.0.1: 8000 / products / all-about-me он отображает aboutme. html (так называемый aboutme view)

все еще не понимаю, оставьте комментарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...