In Django 1 hatte ich eine URL-Auswahl wie folgt:
url("meeting/(?P<action>edit|delete)/", views.meeting_view, name="meeting"),
Wie mache ich das in Django 2.0 mit der <> -Syntax:
Vielleicht so etwas?
path("meeting/(<action:edit|delete>)/", views.meeting_view, name="meeting"),
Antworten:
2 für die Antwort № 1Wenn ich das verstehe DokumentationIhre erste Syntax sollte sofort einsatzbereit sein.
Wie auch immer, wie könnte man mit der neuen Syntax umgehen:
Erste Datei = Ein Python-Paket erstellen converters
und hinzufügen edit_or_delete.py
damit:
import re
class EditOrDeleteConverter:
regex = "(edit|delete)"
def to_python(self, value):
result = re.match(regex, value)
return result.group() if result is not None else ""
def to_url(self, value):
result = re.match(regex, value)
return result.group() if result is not None else ""
Und für deine urls.py
Datei, diese:
from django.urls import register_converter, path
from . import converters, views
register_converter(converters.EditOrDeleteConverter, "edit_or_delete")
urlpatterns = [
path("meeting/<edit_or_delete:action>/", views.meeting_view, name="meeting"),
]
1 für die Antwort № 2
Ich würde keine Verben in URLs verwenden, um den Zweck anzugeben. Verlassen Sie sich stattdessen auf HTTP-Verben wie GET
, PUT
, POST
, DELETE
und handhaben Sie sie aus Ihrer Sicht. Auf diese Weise können Sie mit nur einer Ansichtsklasse alle diese verschiedenen Methoden mit nur einer URL verwalten.