/ / DJANGO Generic Views: Wie verwende ich reverse () in der Methode get_absolute_url? - Django, Formen, Django-Gattungsansichten

DJANGO Generic Views: Wie verwende ich reverse () in der get_absolute_url-Methode? - Django, Formen, generische Django-Ansichten

Ich versuche, generische Bearbeitungsansichten wie gezeigt zu implementieren Hier:

Ich habe mit dem CreateView begonnen, der Daten korrekt rendert und überträgt. Es wird jedoch eine Fehlermeldung angezeigt, wenn ich versuche, mit reverse () zur Detailansichtsseite für das neue Objekt zurückzukehren.

Hier ist meine Fehlermeldung:

NoReverseMatch at / work / clients / create / Reverse für "ClientDetailView" mit Argumenten "(" 14 ",)" und Schlüsselwortargumenten "{}" nicht gefunden. 0 Muster ausprobiert: []

So habe ich get_absolute_url () in meinem Modell definiert:

def get_absolute_url(self):
return reverse("ClientDetailView", kwargs={"pk": self.pk})

Meine Ansicht heißt ClientDetailView. Ich bin nicht sicher, welche anderen Informationen hilfreich wären.

Hier ist die Klasse ClientDetailView:

class ClientDetailView(generic.DetailView):
model = Client
template_name = "work/client_detail.html"`

und hier ist url() aus urls.py:

url(r"^clients/(?P<pk>[0-9]+)/$", views.ClientDetailView.as_view(), name="clients_detail"),`

Kann mir jemand erklären, was ich falsch mache?

Antworten:

0 für die Antwort № 1

Ich habe mein eigenes Problem gelöst. Ich musste den Namespace der reverse () -Methode hinzufügen:

return reverse("work:clients_detail", kwargs={"pk": self.pk})

Ich würde mich freuen, wenn jemand anderes erklären könnte, warum ich das tun musste.

Hier ist meine vollständige urls.py: von django.conf.urls import url

from . import views

app_name = "work"
urlpatterns = [
url(r"^work_orders/$", views.WorkOrdersIndexView.as_view(), name="quotes_index"),
url(r"^work_orders/(?P<pk>[0-9]+)/$", views.WorkOrdersDetailView.as_view(), name="work_orders_detail"),
url(r"^quotes/$", views.QuotesIndexView.as_view(), name="quotes_index"),
url(r"^quotes/(?P<pk>[0-9]+)/$", views.QuotesDetailView.as_view(), name="quotes_detail"),
url(r"^project/(?P<pk>[0-9]+)/$", views.ProjectDetailView.as_view(), name="project_detail"),
url(r"^project/create/$", views.ProjectCreateView.as_view(), name="project_create"),
url(r"^project/(?P<pk>[0-9]+)/update/$", views.ProjectUpdateView.as_view(), name="project_update"),
url(r"^project/(?P<pk>[0-9]+)/delete/$", views.ProjectDeleteView.as_view(), name="project_delete"),
url(r"^clients/$", views.ClientView.as_view(), name="client_index"),
url(r"^clients/(?P<pk>[0-9]+)/$", views.ClientDetailView.as_view(), name="clients_detail"),
url(r"^clients/create/$", views.ClientCreateView.as_view(), name="client_create"),
url(r"^clients/(?P<pk>[0-9]+)/update/$", views.ClientUpdateView.as_view(), name="clients_update"),
url(r"^clients/(?P<pk>[0-9]+)/delete/$", views.ClientDeleteView.as_view(), name="clients_delete"),


]

0 für die Antwort № 2

Eigentlich versuchen Sie, die Ansicht umzukehren, anstatt ClientDetailView Verwenden Sie den URL-Namen clients_detail