2010-07-29 2 views
2

Dans mon application django je me URLS.PY configuré pour accepter les demandes à/communauté/utilisateur/id et/communauté/utilisateur/id/avec:Configurer Django URLS.py pour garder #anchors dans l'URL après le réécrit avec une fin/

url(r'^(?P<username>[\w-]+)/(?P<cardId>\d+)/$', 'singleCard.views.singleCard', name='singleCardView'),

Je l'ai fait que quelques fois les gens vont ajouter une fin «/» et je ne voulais pas soulever un 404.

Cependant parties de mon application javascript ajouter quelque temps une balise d'ancrage sous forme de:

/community/user/id#anchorIuseInJavscriptToDoSomething 

Le problème que j'ai Django est instantanément réécrire l'URL:

/community/user/id/ 

avec une fin/et retirer le #anchorIuseInJavscriptToDoSomething

Id comme pour récrire à:

/community/user/id#anchorIuseInJavscriptToDoSomething/ 

De cette façon mon javascript dans la page peut toujours voir l'ancre et travailler. Comment peut-on adapter cette regex pour faire cela? Je ne suis pas très bon à regex, et appris celui-ci par exemple ...

+0

C'est un problème avec Safari, pas avec Django. – hop

+0

double possible de [Safari ancre sur les liens ne fonctionnent pas.] (Http://stackoverflow.com/questions/3020456/safari-anchors-on-links-not-working) – hop

Répondre

2

vous pouvez faire le slash en option:

url(r'^(?P<username>[\w-]+)/(?P<cardId>\d+)/?$', 'singleCard.views.singleCard', name='singleCardView'), 
0

Le navigateur doit gérer re-annexant l'ancre après la redirection. Votre problème n'a rien à voir avec Django.

+0

Toute idée pourquoi il ne fonctionne pas dans Safari et si il y a une autre solution? Comme par exemple configurer Django pour accepter les deux URL mais pas pour les réécrire? –

+0

@Tristan: c'est un problème connu avec safari. il y a déjà eu des bugs, mais ça ne pourrait pas faire de mal si vous en déposiez un aussi. – hop

+0

BTW, en essayant d'inclure l'ancre dans la redirection que déplacer le problème à IE8, IIRC – hop

0

Pourquoi voulez-vous changer pour /community/user/id#anchorIuseInJavscriptToDoSomething/? Ceci est invalide. Il devrait être /community/user/id/#anchorIuseInJavscriptToDoSomething. L'élément après le hachage ne fait pas partie de l'URL et n'est pas envoyé au serveur.

+1

Quelques fois un utilisateur tapera manuellement dans/communauté/utilisateur/id/ avec une barre oblique de fin. Je ne veux pas retourner un 404 quand ils le font. Je dois aussi avoir un hash là-bas, donc idéalement je ne voudrais pas réécrire l'URL, mais j'ai les deux –

Questions connexes