【问题标题】:Django URL cannot be found找不到 Django URL
【发布时间】:2014-11-18 03:25:46
【问题描述】:

我是 Django 新手,使用本教程学习 https://docs.djangoproject.com/en/1.6/intro/tutorial03/ 路由输入有点问题。

查看代码:

def index(request):
    return HttpResponse(r'<h3 style="font-style: bold;">Index</h3>')

网址配置代码:

1.博客/网址

urlpatterns = patterns('',
    url(r'^$', views.index, name='index')
)

2.project/urls

  urlpatterns = patterns('',
        url(r'^blog/', include('blog.urls')),
        url(r'^admin/', include(admin.site.urls)),
    )

当我为 127.0.0.1:8080/index 而来时

找不到页面 (404)

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

  1. ^blog/
  2. ^admin/

当前的 URL,索引,与其中任何一个都不匹配。

项目结构

blog/
    templates
    __init__.py
    admin.py
    models.py
    tests.py
    urls.py
    views.py
les1/
    __init__.py
    settings.py
    urls.py
    wsgi.py
db.sqlite3
manage.py

找不到错误:(

【问题讨论】:

  • 请使用您尝试访问的 url 以及您收到的完整错误消息更新您的问题。
  • 听起来像一个 http 服务器,因为 apache 正在寻找一个 index.html。你如何为你的 django 项目运行 http 服务器?
  • 从视图响应中删除 r。
  • blog 是否已明确添加到您的应用程序 settings.py - 您是否也可以对您的目录结构进行高级概述?
  • @ham-sandwich 添加到帖子中

标签: python django


【解决方案1】:

您在浏览器中输入的实际网址是什么?是 127.0.0.1:8000 还是 127.0.0.1:8000/index ?从你的帖子来看,我认为是第二个:

The current URL, index, didn't match any of these.

如果输入127.0.0.1:8000/blog会怎样?

index 是您的路由名称,仅在服务器端使用。它是用于快速反转和显示 URL 的快捷方式:

from django.core.urlresolvers import reverse

print(reverse('index'))
# will output "/blog", which is the actual URL

【讨论】:

  • 嗯,它不只是一个前缀吗?当我设置 '^blog/$' 前缀时,它也不起作用。
  • 它不是前缀,它是您在服务器端 (django) 上用于 url 反转的路由标识符。您不能从客户端(网络浏览器)使用它。
【解决方案2】:

从视图代码中删除 r。

def index(request): return HttpResponse('<h3 style="font-style: bold;">Index</h3>')

【讨论】:

  • 感谢您的宝贵时间,但它并没有解决我的问题
  • 我知道@ColonelThirtyTwo,但之前没有定义该错误。
  • 为什么这个答案被否决了?它当然不能解决被质疑的问题,但它指出了另一个错误,显然应该修复。
猜你喜欢
  • 2017-01-18
  • 2014-06-12
  • 2019-01-22
  • 2013-07-13
  • 2014-01-01
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多