Opened 17 years ago

Closed 17 years ago

#5398 closed (worksforme)

Making redirects work properly in views for "include"d URLconfs

Reported by: nimrod.abing@… Owned by: nobody
Component: Documentation Version: dev
Severity: Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Here is a quote from the Django manual http://www.djangoproject.com/documentation/0.96/url_dispatch/


Including other URLconfs

At any point, your urlpatterns can “include” other URLconf modules. This essentially “roots” a set of URLs below other ones.

For example, here’s the URLconf for the Django website itself. It includes a number of other URLconfs: from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^weblog/',        include('django_website.apps.blog.urls.blog')),
    (r'^documentation/', include('django_website.apps.docs.urls.docs')),
    (r'^comments/',      include('django.contrib.comments.urls.comments')),
)

Note that the regular expressions in this example don’t have a $ (end-of-string match character) but do include a trailing slash. Whenever Django encounters include(), it chops off whatever part of the URL matched up to that point and sends the remaining string to the included URLconf for further processing.


OK, so I need to make some of my views reusable between different sites but I need them to be under different "roots". As an example I use the contrib.comments module...

In site 1:

urlpatterns = patterns("",
    (r'^comments/', include('django.contrib.comments.urls.comments')),
    # ... other URL's here...
)

In site 2:

urlpatterns = patterns("",
    (r'^feedback/', include('django.contrib.comments.urls.comments')),
    # ... other URL's here...
)

I was trying to find a way for redirects to work in my views so that the redirects work no matter where the URL's were rooted using include() . I could not find any obvious way from the documentation so I poked around in the source for django.contrib.comments.views.userflags. I found the following:

return HttpResponseRedirect('%sdone/' % request.path)

I think the above information should be included in the documentation for "Including other URLconfs" or perhaps http://www.djangoproject.com/documentation/0.96/tutorial03/#simplifying-the-urlconfs. The current wording seems to imply that once the "root" has been chopped off that information is simply "gone".

While this info is found in the source, like any sensible user I always go to look into the Documentation *before* poking around in the source.

Change History (1)

comment:1 by James Bennett, 17 years ago

Resolution: worksforme
Status: newclosed

The solution to this (in trunk) is to use reverse and named URL patterns, both of which are documented.

Note: See TracTickets for help on using tickets.
Back to Top