/ / wie man Optionen in URLs in Django 2.0 hat - Django, Django-URLs, Django-2.0

wie man Optionen in URLs in Django 2.0 hat - Django, Django-URLs, Django-2.0

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 № 1

Wenn 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.