在Django网站上找不到404页面?

时间:2014-09-08 01:06:13

标签: django views django-urls

我按照Django网站上的教程创建了一个简单的民意调查应用程序。但是,Django无法解析" // 127.0.0.1:8000/polls" ,即使我在mySite / urls.py中定义了正则表达式。我在virtualenv中执行此操作,安装了最新的Django(1.7)。

mySite / urls.py:

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

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

MYSITE /轮询/ urls.py:

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

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

MYSITE /轮询/ views.py:

from django.shortcuts import render
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

MYSITE / settings.py:

 ...
 INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
 ) 
  ....
 ROOT_URLCONF = 'mySite.urls'

我得到的错误:

Using the URLconf defined in mySite.urls, Django tried these URL patterns, in this order: ^admin/  
The current URL, polls, didn't match any of these.

13 个答案:

答案 0 :(得分:67)

我遇到了同样的问题。

事实证明我很困惑,因为多个目录名为" mysite"。

我错误地在根目录中创建了一个urls.py文件" mysite"目录(包含" manage.py"),然后粘贴在网站的代码中。

为了纠正它,我删除了这个文件,进入了mysite / mysite目录(包含" settings.py"),修改了现有的" urls.py"文件,并用教程代码替换代码。

简而言之,请确保您的urls.py文件位于正确的目录中。

答案 1 :(得分:8)

Django无法解析127.0.0.1:8000/polls因为url配置定义为r'^polls/'

常用解决方法:

MYSITE / urls.py:

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

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

注意:的 每当Django遇到include()时,它会删除与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf以进行进一步处理。

MYSITE /轮询/ urls.py:

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

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

注意:您可以使用patterns()函数的第一个参数来指定应用于每个视图函数的前缀,而不是为urlpatterns中的每个条目输入该内容。

回答

如果您想访问127.0.0.1:8000/polls 注意:不带斜线

使用基于视图的网址

url(r'^polls', 'polls.views.index', name='index'),

所以现在你可以访问127.0.0.1:8000/polls而不用斜杠。

答案 2 :(得分:3)

您正在访问http://yourdomain.com/,并且您没有为“/".

定义任何网址

您有两种选择:

  1. 如果您想访问民意调查应用程序的索引页面,则必须输入以下URL:yourdomain.com/polls

  2. 您还可以修改mySite / urls.py文件,以便从yourdomain.com进行访问

    from django.conf.urls import patterns, include, url
    
    from django.contrib import admin
    urlpatterns = patterns('',
    
    url(r'^admin/', include(admin.site.urls)),
    
    url(r'^$', include('polls.urls')),
    
    )
    

答案 3 :(得分:2)

要通过遵循本教程,对于遇到此问题的初学者明确答案,项目根URLconf与settings.py位于同一文件夹中,即:

 mysite/mysite/urls.py

只需确保导入'包含'。代码如下:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^polls/', include('polls.urls')),
]

所以  mysite的/ mysite的/ settings.py:

该行应为:

ROOT_URLCONF =' mysite.urls'

您不需要创建全新的根URLconf。

答案 4 :(得分:1)

根据您放置ROOT urls.py的位置,您可以相应地设置ROOT_URLCONFIG,如果您将其放在包含manage.py的最外层文件夹中,那么“urls”就可以了。如果你在其他文件夹中有它,那么你必须做“.urls”

归功于jerryh91

的答案

有关其工作原理的详情,请查看How Django processes a request

答案 5 :(得分:1)

您将urls.py文件夹放入外部MySite文件夹中,您可以将其放在内部文件夹中,因此它不是mySite / urls.py,而是mySite / mySite / urls.py:

当我完成教程时,

遇到了同样的错误

答案 6 :(得分:1)

访问127.0.0.1:8000/polls的另一种方法是在访问127.0.0.1:8000时重定向浏览器。这是通过编辑.../mysite/mysite/urls.py完成的,如下所示:

from django.conf.urls import include, url
from django.contrib import admin
from polls import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^polls/', include('polls.urls', namespace='polls')),
    url(r'^$', views.index, name='index'),
]

答案 7 :(得分:1)

找不到页面?

如果您在此处看到错误页面,请检查您是否要转到http://localhost:8000/polls/,而不是http://localhost:8000/

enter image description here

来源:https://docs.djangoproject.com/en/3.0/intro/tutorial01/

答案 8 :(得分:0)

实际上问题是你没有注意到这一点 mysite / urls.py和polls / urls.py是两个不同的文件,你修改了polls / urls.py而不是将mysite / urls.py放在urls.py文件中...... mysite \ mysite文件夹。

答案 9 :(得分:0)

就我而言,这是一个愚蠢的错误。我想整合插件django-tinymce,并测试它。因此,按照this指南,我执行了第3步并将变量导出到路径中。当服务器再次运行时,我收到了未找到的错误,显示消息:

  

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

但我不知道究竟是什么,直到我记得导出变量 DJANGO_SETTINGS_MODULE

在终端中运行unset DJANGO_SETTINGS_MODULE解决了我的问题。希望它也可以帮助别人。

答案 10 :(得分:0)

Mysite/urls.py

中添加以下行
url(r'^$', views.index, name='index'),

并检查。如果您已正确创建项目,它应该可以正常工作。如上所述,可能碰巧有多个文件如此混乱。

答案 11 :(得分:0)

2017-10-05_12:03~ / mysite / mysite
$ vi urls.py 2017-10-05_12:04~ / mysite / mysite
$ cd ../ .. 2017-10-05_12:04~
$ mv mysite SENSIBLE_NAME_DJANGO_ROOT

答案 12 :(得分:0)

我遇到了同样的问题,并通过在http://server:port/之后添加/ polls来解决了这个问题,因此服务器中的最终地址如下所示: http://server:port/polls