为啥 Django 给我一个 404 错误

Posted

技术标签:

【中文标题】为啥 Django 给我一个 404 错误【英文标题】:why is Django giving me a 404 error为什么 Django 给我一个 404 错误 【发布时间】:2018-12-23 03:51:42 【问题描述】:

我目前正在尝试完成 Django 2.0 教程投票应用程序。我正在使用 Django 版本 2.0.7 和 Python 3.7.0。我已经为这个项目建立了一个虚拟环境。我对 Django 很陌生,如果我的术语不正确,我深表歉意。

基本上,我无法让第 1 部分工作。

我已经尝试过无数次运行它,但我似乎无法弄清楚为什么它不起作用。

在我创建 Polls 应用程序之前,网站运行正常,我得到了火箭飞船,但是在我创建应用程序后,更新 polls/views.py,创建 polls/urls.py 文件并更新 mysite/urls.py ,我收到以下错误:

找不到页面 (404) 请求方法 GET 请求网址:http://127.0.0.1:8000/

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

    民意调查/ 管理员/

空路径与其中任何一个都不匹配。

我认为我的代码不正确,所以我直接从网站上复制并粘贴了代码并尝试运行它。还是不行。

下面是我正在尝试的代码和目录布局。任何帮助将不胜感激。我确定我只是缺少一些简单的东西。

谢谢。

mysite/urls.py

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

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

投票/urls.py

from django.urls import path

from . import views

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

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

C:\Users\ad\Documents\projects\mysite\msenv\mysite\mysite 目录

打印.txt

settings.py

urls.py

wsgi.py

初始化.py

pycache

C:\Users\ad\Documents\projects\mysite\msenv\mysite\polls 目录

admin.py

apps.py

迁移

models.py

tests.py

urls.py

views.py

初始化.py

pycache

【问题讨论】:

一旦你添加了一个应用并重定向它,你必须使用你在应用中使用的 url 模式来调用它。所以,你试试127.0.0.1:8000/polls 您的代码没有问题。您应该阅读错误消息:它告诉您您要去的是您尚未定义的 /,而不是您拥有的 /polls 或 /admin。 感谢您的帮助,我真的很生气自己错过了这一点。它在文档中说。 【参考方案1】:

您是否在 settings.py 中添加了您的应用名称,请确保您已在位于项​​目文件夹下的 settings.py 中添加名称

在你的情况下,它会在这里:

C:\Users\ad\Documents\projects\mysite\msenv\mysite\mysite 目录

像这样:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_name',] # <--- polls in your case

确保您使用您定义的路线来访问正确的页面

例如你的情况:

您网站的路线是:

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

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

您的应用程序“投票”路线是:

from django.urls import path

from . import views

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

根据你的views.py文件

这是:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

您必须访问http://localhost:端口号/polls/ 或http://127.0.0.1:端口号/polls/

默认端口号为 8000

使用 python manage.py runserver 运行服务器后

将您的页面作为浏览器的输出

【讨论】:

感谢您的帮助,很恼火我错过了在地址末尾添加民意调查。

以上是关于为啥 Django 给我一个 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Django 管理员登录给我 403 CSRF 错误?

Django HTTP 错误 404:未找到:在我的视图中使用 config.json 文件

为啥 404 在 django url 中?

为啥我在 Django 中有这个错误?

为啥 Django 没有 405 的错误页面处理程序 - 方法不允许?

S3 存储桶找不到 index.html,给我一个 404 错误