Файл URLs в Django перенаправляет различные URL на неправильные html-файлы
Мой Django сайт работает неправильно. Это трудно объяснить, но когда я запускаю свой веб-сервер Django и перехожу по адресу http://127.0.0.1:8000/hello/ я вижу "Hello, World!", как и ожидалось. Но когда я перехожу на http://127.0.0.1:8000/dashboard/ я вижу то же самое, когда я должен видеть "Hello". Здесь слишком много кода, чтобы поместить его на stack overflow, и он не будет иметь смысла, поэтому я сделал репо на GitHub https://github.com/Unidentified539/stackoverflow.
Ваш код должен быть таким, как в
.
practice/urls.py
from django.urls import path
from practice import views
urlpatterns = [
path(" ", views.hello_world, name='hello_world'),
path("dashboard", views.dashboard, name='dashboard')
]
Project1 urls.py
import practice.urls
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path(" ", include('practice.urls')),
]
В чем проблема вашего кода?
Согласно вашему коду, у вас есть два одинаковых пути для главной страницы, и когда вы вводите http://127.0.0.1:8000/hello/
Django смотрит на urls.py уровня проекта (в вашем коде djangoProject1/urls.py) и знает, что должно идти в urls.py уровня приложения (в вашем коде practice/urls. py) и в этом файле у вас есть два одинаковых пути, и Django использует первый, поэтому вы получаете страницу write, потому что первый путь связан с hello view, и когда вы набираете http://127.0.0.1:8000/dashboard/
Django снова смотрит на проект-уровень urls.py и знает, что нужно идти в app-level urls.py и в этом файле снова использует первый путь и вы получаете неправильный HTML файл (потому что оба пути одинаковы и Django всегда использует первый)
Как это исправить?
в url.py на уровне проекта установите оба пути в '', а на уровне приложения установите пути на уровне проекта. (другими словами, замените пути в app-level и project-level
)djangoProject1/urls.py:
import practice.urls
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('practice.urls')),
]
practice/urls.py:
from django.urls import path
from practice import views
urlpatterns = [
path('hello/', views.hello_world, name='hello_world'),
path('dashboard/', views.dashboard, name='dashboard')
]
Итак, чтобы упростить свою жизнь
urlpatterns = [
path("",views.pomo,name="pomo"),
path("agenda/",views.agenda,name="agenda"),
path("notes/",views.notes,name="notes"),
]
это ваш файл urls.py в вашем приложении
просто введите это в urls.py вашего проекта, чтобы не создавать беспорядок с путями и include
urlpatterns = [
path('admin/', admin.site.urls),
path("",include('pomofocus.urls'))
]
это просто пример, вам нужно ввести свои собственные пути и представления