Page not found 404 on Django site?

jerryh91 picture jerryh91 · Sep 8, 2014 · Viewed 51.3k times · Source

I'm following the tutorial on Django's site to create a simple poll app. However, Django is unable to resolve "//127.0.0.1:8000/polls" , even though I've defined the regex in mySite/urls.py. I'm doing this in a virtualenv, with the latest Django (1.7) installed.

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/polls/urls.py:

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

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

mySite/polls/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'

The error I'm getting:

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.

Answer

ZakJ picture ZakJ · Apr 15, 2015

I had the same problem.

It turns out I was confused because of the multiple directories named "mysite".

I wrongly created a urls.py file in the root "mysite" directory (which contains "manage.py"), then pasted in the code from the website.

To correct it I deleted this file, went into the mysite/mysite directory (which contains "settings.py"), modified the existing "urls.py" file, and replaced the code with the tutorial code.

In a nutshell, make sure your urls.py file is in the right directory.