Search code examples
djangourlroutesurl-pattern

In Django, How do you write the url pattern for '/' and other root-based urls


I'm new to django, and one of the things that I'm still learning is url_patterns. I set up a pages app to handle the root path (http://www.mysite.com) as well as some static pages such as the about page. I figured out how to set up the url pattern for the root path, but I can't get the site to direct the path '/about' to the pages "about" view.

Here is my main urls.py

 from django.conf.urls import patterns, include, url
 from django.conf import settings
 urlpatterns = patterns('',
     url(r'^polls/', include('polls.urls')),
     url(r'^$', 'pages.views.root'),
     url(r'^/', include('pages.urls')),
  )

here is my pages urls.py

 from django.conf.urls import patterns, include, url
 urlpatterns = patterns('pages.views',
      url(r'^about', 'about'),
 )

Here is my pages views.py

 # Create your views here.
 from django.shortcuts import render_to_response
 from django.template import RequestContext
 from django.http import HttpResponse, HttpResponseRedirect
 from django.core.urlresolvers import reverse

 def root(request):
    return render_to_response('pages/root.html',context_instance=RequestContext(request))
 def about(request):
    return render_to_response('pages/about.html',context_instance=RequestContext(request))

If I change the main urls.py file to have r'^a/', include('pages.urls') then the path '/a/about' directs to the about action.. so I think it has to be an issue in the way i'm writing the url pattern in this file. But, I can't figure out how to change it. Can anyone help?


Solution

  • Figured out what the issue is. The proper url_pattern on the project level is:

     urlpatterns = patterns('',
        url(r'^polls/', include('polls.urls')),
        url(r'^$', 'pages.views.root'),
        url(r'', include('pages.urls')),
     )
    

    When this is in place, '/about' and other simple paths direct properly.

    Thanks everyone!