2010-07-01 11 views
0

J'utilise Django et j'ai l'URL suivante dans le fichier urls.py de mon projet.Paramètres d'URL Django d'applications externes

(r'^user/(?P<username>[\w_\-\.]+)/my_app/', include('my_app.urls')), 
(r'^user/(?P<username>[\w_\-\.]+)/my_other_app/', include('my_other_app.urls')), 
... 

Le but est d'avoir une application qui utilise le nom d'utilisateur d'un utilisateur, par ex. une application de profil où chaque utilisateur a une page de profil. Une seule vue dans cette application doit avoir le nom d'utilisateur dans l'URL (celle qui affiche la page de profil), mais toutes les vues doivent prendre un paramètre username même si elles ne font rien avec elle.

Je suppose que cette utilisation des paramètres d'URL est erronée car elle oblige chaque vue de my_app à prendre le nom d'utilisateur en tant que paramètre (parce qu'il est transmis à partir de l'expéditeur d'URL). Pour moi, cela n'a aucun sens pour un composant externe (le fichier urls.py du projet) de dire aux URL de my_app quels sont les paramètres à prendre.

Cette utilisation est-elle correcte? Si non, comment dois-je faire cela?

Répondre

0

Cela semble étrange. Ne pouvez-vous pas changer vos applications pour rechercher le paramètre username à la place? Sous my_app.urls et le dernier, juste le champ username dans la recherche sur les champs dont vous avez besoin.

De cette façon, la structure ressemble plus:

/user/my_app/friends/hekevintran/

/user/my_other_app/connections/bartek/

qui fonctionne aussi bien et ne force pas vos applications à compter sur le contexte de votre projet racine pour le nom d'utilisateur .

+0

Pourriez-vous expliquer "avoir le champ d'utilisateur dans la recherche sur les champs dont vous avez besoin" un peu plus? Je ne comprends pas vraiment. – hekevintran