2
votes

Mise à jour Django 2.0 - Faux positifs sur les urls.W001 Avertissement

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.


4 commentaires

êtes-vous sûr que le fichier urls.py contenant le modèle d'url some_name n'est pas inclus dans un urls.py de niveau supérieur où vous utilisez toujours le "$"? par exemple. some_name est un modèle d'URL dans blog.urls et dans my_app.urls vous avez include (blog.urls)


En partant de zéro - avez-vous recréé tout le projet à partir de nouveau? Sinon, il peut y avoir des fichiers .pyc ou __pycache__ à supprimer; sur ubuntu, vous pourrez peut-être utiliser l'outil pyclean pour 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.


3 Réponses :


1
votes

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 $


0 commentaires

4
votes

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!


1 commentaires

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']



1
votes

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


0 commentaires