Sorry im Voraus, wenn diese Frage ein wenig überflüssig aussieht, aber ist etwas, das mich wirklich stört.Django Url Warnung urls.W002
Ich habe eine Reihe von APIs in Django geschrieben durch die folgenden URLs definiert.
# urls.py
import ...
urlpatterns = [
url(r"^api/v1/account", include(profile.urls))
]
und
# profile/urls.py
import ...
urlpatterns = [
url(r"^$", AccountAPI.as_view()),
url(r"^/login$", LoginAPI.as_view()),
url(r"^/logout$", LogoutAPI.as_view())
]
Diese Konfiguration sollte nur die URLs erlauben:
/api/v1/account
/api/v1/account/login
/api/v1/account/logout
Diese Arbeit für meine Zwecke aber ich halte Warnungen, die wie (ich habe mit mehreren API definiert Diese Regel und die Warnliste ist viel größer):
?: (urls.W002) Your URL pattern '^/login$' has a regex beginning with a '/'. Remove this slash as it is unnecessary.
?: (urls.W002) Your URL pattern '^/logout$' has a regex beginning with a '/'. Remove this slash as it is unnecessary.
Wenn ich den Schrägstrich entferne, validiert der Server die von mir definierten URLs nicht. Dafür habe ich musste ein auf der ersten Ebene der Urls wie Slash:
# urls.py
import ...
urlpatterns = [
url(r"^api/v1/account/", include(profile.urls))
]
Und dies wird das Konto Anruf mit einem Schrägstrich Ende machen, was ich will nicht.
Ich fühle, dass ich die URLs die eleganteste Weise definiert habe, die ich gefunden habe, um meinem Zweck zu dienen, und ich halte diese traurigen Warnungen in meinen Protokollen.
Mache ich etwas falsch? Gibt es einen richtigen Weg, die URLs zu definieren, ohne die Struktur zu kompromittieren, die ich für sie auswähle? Oder gibt es eine Möglichkeit, diese Warnungen auszuschalten?
Weil ich es ohne definieren. Persönlich bevorzuge ich ohne. Ich habe den URL-Dispatcher gelesen und dieser scheint für die Root-URL gültig zu sein, nicht die, die im Root "enthalten" sind. – joaonrb