Tous les exemples que je peux trouver d'urlpatterns pour les sites django ont une entrée séparée pour les URL entrantes qui n'ont pas de barre oblique, ou le dossier racine. Ensuite, ils gèrent des sous-dossiers sur chaque ligne individuelle. Je ne comprends pas pourquoi simpleDjango urlpatterns problème frustrant avec les barres obliques
/?
expression régulière ne permet pas ces être sur une ligne simple.
Considérons ce qui suit, appelons le projet Django Baloney et le nom de l'application est Cheese. Ainsi, dans le projet urls.py nous avons quelque chose comme ceci pour permettre aux applications urls.py de gérer les demandes est ...
urlpatterns = patterns('',
(r'^cheese/', include('Baloney.Cheese.urls')),
)
puis à l'intérieur des applications de fromage urls.py, je ne comprends pas pourquoi une simple ligne ne déclencherait pas aussi vrai pour tous les sous-chemins url entrants, y compris une valeur vide ...
urlpatterns = patterns('',
(r'^(?P<reqPath>.*)/?$', views.cheeseapp_views),
)
au lieu de cela, il correspond au cas en blanc, mais pas le cas d'une valeur actuelle. Alors ...
http://baloneysite.com/cheese/ --> MATCHES THE PATTERN
http://baloneysite.com/cheese/swiss --> DOES NOT MATCH
Fondamentalement, je veux capturer la variable reqPath pour inclure ce qui est là (même en blanc ou « »), mais non une barre oblique de fin s'il y a un. Les URL sont des limes dynamiques extraites de la base de données, donc je fais tout le suivi jusqu'au contenu dans mes vues et j'ai juste besoin des motifs d'URL pour transmettre les valeurs. Je sais que les travaux suivants, mais ne comprends pas pourquoi tout cela ne peut pas être placé sur une ligne avec le /? expression régulière avant le signe $ final.
(r'^$', views.cheeseapp_views, {'reqPath':''}),
(r'^(?P<reqPath>.*)/$', views.cheeseapp_views),
Appréciez toute idée.
Je ne peux pas répondre à votre question, mais je suis sûr que vous vouliez dire r '^ (? P . *?) /? $'. Sinon, votre barre oblique sera toujours incluse dans reqPath. – cababunga
Je le fais "tout le temps" et ça marche toujours. Avez-vous coller ici votre code exact? –
cababunga - qu'est-ce que le point d'interrogation supplémentaire après. * Faire? . * est regex pour 0 ou un nombre de caractères. ??? – sansjoe