【问题标题】:Django urls giving 404 errorDjango url 给出 404 错误
【发布时间】:2014-05-19 01:12:05
【问题描述】:

每当我尝试访问我网站上的“blog/”时,Django 都会给我一个 404 错误,但我已经定义了我想要的 URL,它们应该与之匹配。

主 urls.py:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()
from blog import views

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mySiteProject.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

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

blog.urls.py:

from django.conf.urls import patterns,url
from blog import views

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

404 页面:

Page not found (404)
Request Method:     GET
Request URL:    http://localhost:8000/blog/

Using the URLconf defined in mySiteProject.urls, Django tried these URL patterns, in this order:

    ^admin/

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

网站结构:

mySiteProject
    blog
        admin.py
        models.py
        tests.py
        views.py
        urls.py
        __init__.py
    mySiteProject
        wsgi.py
        settings.py
        urls.py
        __init__.py
    manage.py
    db.sqlite3

已安装的应用程序:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'blog'
)

【问题讨论】:

  • 你的文件叫 blog.urls.py 吗?您能否分享一下您的项目中不同的源文件是如何组织的,即项目的目录结构?
  • 一个愚蠢的问题:您是否将编辑保存在主 urls.py 中?鉴于您的错误消息,您的服务器似乎没有注册更改。
  • @shaktimaan:是的。我会用不同的文件更新帖子。
  • @SteinarLima:是的,我已经保存了。每当我转到不同的 URL 时,它都会显示“blog/”正在尝试。
  • 如果我错了,请纠正我,但我相信patterns 需要一个前缀作为其第一个参数,后跟零个或多个参数。所以我相信blog.urls.py 中的urlpatterns = patterns(url(r'^$',views.index,name='index')) 应该是这样的:urlpatterns = patterns('', url(r'^$', views.index, name='index'))。

标签: python django url urlconf


【解决方案1】:

patterns 需要一个前缀作为其第一个参数,后跟零个或多个参数。所以这个:

urlpatterns = patterns(url(r'^$',views.index,name='index'))  # won't work

blog.urls.py 中应如下所示:

urlpatterns = patterns('', url(r'^$', views.index, name='index'))  # now has a prefix as first argument

在当前状态下,blog.urls.py 中的patterns 函数将返回一个空的pattern_list,这意味着url(r'^blog/', include('blog.urls')) 将不返回任何模式。

【讨论】:

    猜你喜欢
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多