0
votes

Comportement des URL de Django avec un chemin complexe

Dans mon projet Django, dans URLS.PY Fichier J'ai un lien comme celui-ci: xxx

OK Tout le travail effectué lorsque j'ai une URL comme:

< un href = "http://127.0.0.1:8000/poliamb/test1" rel = "nfollow noreferrer"> http://127.0.0.1:8000/poliamb/test1

mais J'ai eu une erreur lorsque j'ai par exemple

http://127.0.0.1 : 8000 / POLIAMB / TEST1-Autre

S'il y a le - Connexion dans le chemin d'URL Django Obtenez l'URL non définie ERROR

Quelqu'un peut-il accueillir également les URL avec - signe?

Tellement merci d'avance


0 commentaires

3 Réponses :


2
votes

Le problème de votre URL Expression régulière est le \ w + qui correspond à n'importe quel nombre de caractères Word. Les caractères de mots sont A-Z, A-Z, 0-9 et Underscore ( _ )

test1 passe ce test, mais test1-autre n'est pas.

Modification de votre regex sur r '^ poliamb \ / (? p [\ w \-] +) \ / $' correspondra aux URL contenant des tirets ( - ) aussi bien.


0 commentaires

1
votes

Si vous ne voulez pas correspondre à des traits d'union consécutifs, vous pouvez éventuellement répéter un groupe non capturant contenant un trait d'union et 1 caractères de mots (?: - - \ w +) *

dans la motif il y a un / à la fin qui n'est pas dans l'exemple de données. S'il est facultatif, vous pouvez utiliser /? $ à la fin. xxx

Démo Regex


0 commentaires

1
votes

Il est préférable d'utiliser chemin code> et non url code>. URL code> est obsolète et remplacé par re_path code>.

str code> prendra une chaîne sauf le caractère SLASH ("/ P). P >

path(route='poliamb/<slug:m_path>/', view=pol_data, name='pol_data'),


0 commentaires