Django Sites - Different urls.py for two sites
Asked Answered
C

1

6

I maintain a Django webapp for a client of mine. We built it out in Django and for computer users, it's great. We now want to cater to mobile device users.

On top of a template switch, we also need things to work differently. The application will have views that work in a subtly different way but also the URL structure needs to be simplified.

I realise what I'm about to ask for violates the DRY ethos but is there a good way to split the urls.py so that half of it is for ourdomain.com and the other half is for m.ourdomain.com? If I can do that, I can add a mobile_views.py and write the new views.

Django's Sites is enabled in the project but I'm happy to use a hard-coded request.domain.startswith('m.')-style hack. Seems like that might perform better - but I've no idea how one gets the request from the URLs file.

Concavity answered 16/6, 2011 at 10:7 Comment(0)
U
7

Use middleware to detect the access to the other site and set request.urlconf to the other urlconf that you want to use.

Unshackle answered 16/6, 2011 at 10:25 Comment(2)
Yeah that'll work for me. Thanks. Edit: I assume this has to be one of the first middleware rules to trigger. And do you know if Django's reverse will still work (assuming the new URLs have the same names)?Concavity
You may have to pass request.urlconf to reverse(), but otherwise it should work.Unshackle

© 2022 - 2024 — McMap. All rights reserved.