Je mets à niveau un projet Django de Django 1.11 vers Django 2.1.7, et après avoir changé tous les modèles d'URL vers la manière de faire Django 2, j'obtiens un tas de faux positifs sur les url. quand je gère manage.py runserver.
Exemple:
?: (urls.W001) Votre modèle d'URL '^ some-pattern / $' [name = 'some_name'] utilise include avec une route se terminant par un '$'. Supprimez le dollar de l'itinéraire pour éviter les problèmes liés aux URL.
Quand je regarde ce modèle d'URL dans mon fichier urls.py, cependant, il ne contient absolument aucun ^ ou $.
chemin ('some-pattern /', views.some_view_function, name = 'some_name'),
Est-ce que quelqu'un d'autre est tombé sur ça? L'application elle-même semble fonctionner correctement, je suis juste déconcerté par l'endroit où Django pourrait voir des choses qui n'existent nulle part dans mon code.
Merci pour toute idée que quelqu'un pourrait avoir.
3 Réponses :
cela m'est arrivé quand j'avais deux projets django en cours d'exécution sur mon PC, le fait est que si vous n'utilisez pas un environnement virtuel, les choses deviennent désordonnées et cela va toujours dans la même liste de chemins.
Je changerais d'abord les noms des itinéraires auxquels vous essayez d'accéder pour que vous sachiez s'il y va pour vérifier la liste des itinéraires
ensuite attention car avec les routes de chemin path ('this-way / ... c'est différent de path (' / this-way / '... path ('this-way / ... ajoute' / this-way / 'à la direction du navigateur exemple: https: // localhost: 8000 / login devient https: // localhost: 8000 / login / this-way / c'est de là que pourrait venir le $
Il s'avère que cela était en effet lié au CMS Django - il s'agit de la première version de leur version qui prend en charge Django 2 mais qui prend toujours en charge Django 1.11 également, donc ils tirent au milieu à certains endroits et quand il extrait des URL pour nos apphooks, ils sont traduits en modèles avec ^ et $ dans le mix. J'espère que cette information aidera quelqu'un d'autre qui pourrait rencontrer cela. Merci pour toutes les suggestions!
Pour le moment, en attendant une solution dans les prochaines versions de Django CMS, j'ai fait taire l'avertissement dans settings.py avec SILENCED_SYSTEM_CHECKS = ['urls.W001']
Comme @matt le dit, le coupable est la transition de Django CMS vers Django 2.0.
J'ai fait taire les avertissements avec
SILENCED_SYSTEM_CHECKS = ['urls.W001']
dans settings.py
êtes-vous sûr que le fichier urls.py contenant le modèle d'url
some_namen'est pas inclus dans un urls.py de niveau supérieur où vous utilisez toujours le "$"? par exemple.some_nameest un modèle d'URL dansblog.urlset dansmy_app.urlsvous avezinclude (blog.urls)En partant de zéro - avez-vous recréé tout le projet à partir de nouveau? Sinon, il peut y avoir des fichiers
.pycou__pycache__à supprimer; sur ubuntu, vous pourrez peut-être utiliser l'outilpycleanpour cela.Je rechercherais le modèle dans tout le projet, juste au cas où, avec quelque chose comme ceci:
fgrep --include = *. Py -ri "^ some-pattern / $".Voir si c'est caché quelque part.Merci pour toutes les excellentes suggestions - j'ai certainement recherché la base de code ainsi que toute la structure de répertoires du virtualenv et littéralement tout époustouflé lors du redémarrage, mais toujours bon de vérifier. Nous commençons à penser que cela pourrait avoir quelque chose à voir avec Django CMS et la façon dont il gère les URL d'apphook en interne, car nous ne pouvons pas encore déterminer une autre explication. Merci pour les idées! Si / quand nous arrivons à une résolution, je serai sûr et je mettrai à jour ici.