2017-09-06 4 views
0

Ich habe django app (1.8) umleiten, und ich möchte die Umleitung haben von BookingRedirect zu ArchiveListView nach Klick unten stehenden Link:kann nicht zu einer anderen Ansicht/url

<a href="{% url 'archive:list' %}" title="{% trans 'Archive' %}"> 
    {% trans 'Archive' %} 
</a> 

ich diesen Fehler recived:

Reverse for 'archives' with arguments '()' and keyword arguments '{'kwargs': {'year': '2014', 'month': '1'}}' not found. 1 pattern(s) tried: ['en/archive/(?P<year>[0-9]{4})/(?P<month>[0-9]+)$'] 

Meine Ansicht, wo ich Umleitung auf eine andere uRL mit einer anderen Ansicht haben wollen:

from django.shortcuts import redirect 


class BookingRedirect(RedirectView): 
    permanent = False 

    def get_redirect_url(self, *args, **kwargs): 
     return redirect('archive:archives', kwargs={'year': '2014', 'month': '1'}) 

Urls:

urlpatterns = [ 
    url('^$', views.BookingRedirect.as_view(), name="list"), 
    url(r'^/(?P<year>[0-9]{4})/(?P<month>[0-9]+)$', views.ArchiveListView.as_view(), name="archives"), 
] 
+0

Sie haben einen unnötigen führenden Schrägstrich in Ihrem Muster. –

+0

@DanielRoseman Ich entfernte das und nichts passierte – Kai

Antwort

1

Das ist nicht, wie Sie kwargs zum redirect Funktion übergeben. Sie übergeben sie direkt als Kwargs:

return redirect('archive:archives', year='2014', month='1') 

Siehe the docs.

Beachten Sie jedoch, dass Ihre get_redirect_urlnicht diese Funktion überhaupt verwenden sollte. Es muss eine URL zurückgeben, an die die Ansicht anschließend weitergeleitet wird. Sie müssen also reverse verwenden, die tut kwargs im Format nehmen Sie verwendet:

return reverse('archive:archives', kwargs={'year': '2014', 'month': '1'}) 
+0

Großartig, danke :) +1 – Kai

Verwandte Themen