2009-01-09 5 views
3

J'ai un projet django qui contient des applications. L'urls.py principale inclut l'urls.py des applications que j'ai activées, et tout va bien.Quelle est la meilleure façon de mapper les urls principaux dans un projet django?

Maintenant je veux configurer le projet de sorte que quand vous allez à http://testsite/, vous obtiendrez la même page que vous obtenez quand vous allez à http://testsite/app/.

Je peux le faire en dupliquant la ligne correspondante dans les applications urls.py dans les projets urls.py, mais cela semble sale.

Quelqu'un sait-il un meilleur moyen?

Répondre

6

Mettre en place un redirect_to de la première URL pour la deuxième, à savoir:

from django.conf.urls.defaults import patterns, url, include 
from django.views.generic.simple import redirect_to 

    urlpatterns = patterns('', 
     # Example: 
     url(r'^$', redirect_to, {'url':'/app/'}), 
     url(r'^app/', include('app.urls')), 
     # ... 
    ) 

HTH

1

Une redirection est le chemin à parcourir, parce que vous ne voulez pas plusieurs URL canoniques pour la même ressource (gaspille du jus de Google). Idéalement, vous devriez faire la redirection aussi près que possible du bord de votre pile pour économiser les ressources du serveur. Vous pouvez donc faire une entrée Django redirect_to urlconf, mais vous feriez mieux d'utiliser une redirection Apache ou nginx ou insert-your-webserver-here, donc la requête initiale ne doit jamais toucher Django.

Questions connexes