为什么 Django 无法正确路由我的 url?

问题描述 投票:0回答:1

我正在尝试用 django 搭建一个简单的网站。我已经定义了我的路线,并且它们可以工作,前提是如果我想回家,我必须到 localhost/home/home 而不仅仅是 localhost/home。我的关于页面也是如此。本地主机/主页/关于。如果当我尝试访问 localhost/home 或关于 django 时有任何帮助,则表示找不到该页面。本质上是 404 错误。

这就是姜戈对我吐出的话;

`使用 bbsite.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:

管理员/ 关于/ 家/家/ [名称='家'] 主页/关于/[名称='关于'] 当前路径 home/ 与其中任何一个都不匹配。`

bbsite/urls.py

from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('about/', include('bulaboysdotcom.urls')),
    path('lee/', include('bulaboysdotcom.urls')),
    path('dede/', include('bulaboysdotcom.urls')),
    path('contactus/', include('bulaboysdotcom.urls')),
    path('home/', include('bulaboysdotcom.urls')),

]

bulaboysdotcom/urls.py

from django.urls import path
from . import views


urlpatterns = [
    path('about/', views.about, name="about"),
    path('lee/', views.lee, name="lee"),
    path('dede/', views.dede, name="dede"),
    path('contactus/', views.contact_us, name="call-us"),
    path('', views.home, name="index"),
]

bulaboysdotcom/views.py

from django.shortcuts import render


def home(request):
    return render(request, 'bulaboysdotcom/index.html')

def about(request):
    return render(request, 'bulaboysdotcom/about.html')

def lee(request):
    return render(request, 'bulaboysdotcom/lee.html')

def dede(request):
    return render(request, 'bulaboysdotcom/dede.html')

def contact_us(request):
    return render(request, 'bulaboysdotcom/contactus.html')

bulaboysdotcom/apps.py

from django.apps import AppConfig


class BulaboysdotcomConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "bulaboysdotcom"

bbsite/settings.py (已安装的应用程序部分)

    "bulaboysdotcom.apps.BulaboysdotcomConfig",
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
]
html python-3.x django django-views django-urls
1个回答
0
投票

您忽略了 Django url 的工作原理。当你说

path('about/', include('bulaboysdotcom.urls')),

在你的根目录bbsite/urls.py中,你告诉Django要做的是将

about/
添加到项目bulaboysdotcom/urls.py中的all,这就是为什么你必须输入“ baseurl/about/home”而不是“baseurl/home”。

根 urls.py 中之后的行:

path('lee/', include('bulaboysdotcom.urls')),

永远不会被使用,因为 Django 会找到 first 匹配,即

about

解决方案

如果您不想在 bulaboysdotcom/urls.py 中的 url 前面添加某些内容,则不要在这些 url 的根 urls.py 中包含任何内容: # bbsite/urls.py from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('bulaboysdotcom.urls')), ]

这应该可以解决你的问题。

其次,为什么不使用

urls.py

中定义的

name
对你有利。 # views.py from django.shortcuts import render def home(request): return render(request, 'index') def about(request): return render(request, 'about') def lee(request): return render(request, 'lee') def dede(request): return render(request, 'dede') def contact_us(request): return render(request, 'call-us')

© www.soinside.com 2019 - 2024. All rights reserved.