Django: Nach der POST-Methode mit klassenbasierten Ansichten auf dieselbe Seite umleiten

Ich mache eine Django-App, die die Folgen von Fernsehsendungen protokolliert. Dies ist für eine Seite in einer bestimmten Show-Instanz. Wenn ein Benutzer klickt, um eine Staffel hinzuzufügen oder zu entfernen, möchte ich, dass die Seite sie in die gleiche Detailansicht umleitet. Ich habe sie jetzt im Index, der die Liste aller Show-Instanzen anzeigt.

show-detail.html

<form action="{% url 'show:addseason' show=show %}" method="post">
    {% csrf_token %}

    <button class="btn btn-default" type="submit">+</button>
</form> 

<form action="{% url 'show:subtractseason' show=show %}" method="post">
    {% csrf_token %}

    <button class="btn btn-default" type="submit">-</button>
</form>

views.py

class ShowDetail(DetailView):
    model = Show
    slug_field = "title"
    slug_url_kwarg = "show"
    template_name = 'show/show-detail.html'

class AddSeason(UpdateView):
    model = Show
    slug_field = 'title'
    slug_url_kwarg = 'show'
    fields = []

    def form_valid(self, form):
        instance = form.save(commit=False)
        instance.season += 1
        instance.save()

        return redirect('show:index')

class SubtractSeason(UpdateView):
    model = Show
    slug_field = 'title'
    slug_url_kwarg = 'show'
    fields = []

    def form_valid(self, form):
        instance = form.save(commit=False)
        if (instance.season >= 0):
            instance.season -= 1
        else:
            instance.season = 0

        instance.save()

        return redirect('show:index')

urls.py

url(r'^

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.IndexView.as_view(), name='index'), url(r'^about/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.AboutView.as_view(), name='about'), # form to add show url(r'^add/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.ShowCreate.as_view(), name='show-add'), # edit show #url(r'^(?P<show>[\w ]+)/edit/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.ShowUpdate.as_view(), name='show-update'), # delete show url(r'^(?P<show>[\w ]+)/delete/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.ShowDelete.as_view(), name='show-delete'), # signup url(r'^register/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.UserFormView.as_view(), name='register'), # login url(r'^login/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.LoginView.as_view(), name='login'), # logout url(r'^logout/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.LogoutView.as_view(), name='logout'), url(r'^error/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.ErrorView.as_view(), name='error'), url(r'^(?P<show>[\w ]+)/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.ShowDetail.as_view(), name='show-detail'), url(r'^(?P<show>[\w ]+)/addseason/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.AddSeason.as_view(), name='addseason'), url(r'^(?P<show>[\w ]+)/subtractseason/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.SubtractSeason.as_view(), name='subtractseason'), url(r'^(?P<show>[\w ]+)/addepisode/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.AddEpisode.as_view(), name='addepisode'), url(r'^(?P<show>[\w ]+)/subtractepisode/

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
, views.SubtractEpisode.as_view(), name='subtractepisode'),

Ich erhalte eine Fehlermeldung, wenn ich es versuche

return redirect('show:detail')

Dies ist der Fehler

NoReverseMatch at /Daredevil/addseason/
Reverse for 'detail' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

Antworten auf die Frage(8)

Ihre Antwort auf die Frage