2017-01-28 5 views
0

ich eine Django Create habe, die in der Abfragezeichenfolgeflag mit einem UUID zu einer URL umleiten sollten:reverse_lazy nicht mit kwargs passend

@method_decorator(xframe_options_exempt, name='dispatch') 
class ActivityCreateView(CreateView): 

    template_name = 'embedded/activities/create.html' 
    form_class = ActivityCreateUpdateForm 

    def get_success_url(self): 
     return reverse_lazy('embedded:activity_status', kwargs={'unieke_code': self.object.access_link}) 

Dies jedoch gibt die bekannten Fehler:

Reverse for 'activity_status' with arguments '()' and keyword arguments '{'unieke_code': UUID('470e3a5f-6f52-414e-a431-bf5c6e68509a')}' not found. 1 pattern(s) tried: ['embedded/activiteiten/status/']

Das Seltsame ist, dass es anscheinend das Muster findet, aber immer noch nicht übereinstimmt. Das ist mein urls.py:

urlpatterns = [ 
    url(r'^activiteiten/$', views.ActivitiesIndexView.as_view(), name='activities_index'), 
    url(r'^activiteiten/aanmelden/$', views.ActivityCreateView.as_view(), name='activity_create'), 
    url(r'^activiteiten/status/', views.ActivityStatusView.as_view(), name='activity_status'), 
] 

Merkwürdigerweise, wenn ich zu mysite.com/embedded/activiteiten/status/?unieke_code=470e3a5f-6f52-414e-a431-bf5c6e68509a gehe es funktioniert.

Antwort

2

Die Funktionen reverse und reverse_lazy sind nicht zum Übergeben von GET-Parametern vorgesehen. Das ist der Grund, warum es versagt.

So etwas sollte funktionieren:

url = reverse_lazy('embedded:activity_status') 
params = urlencode({'unieke_code': self.object.access_link}) 
return '{0}?{1}'.format(url, params) 

Randbemerkung: In Python 2 Sie urlencode von urllib importieren sollten, und in Python 3, es ist in urllib.parse

+0

Dank! Ich denke, ich habe die Dokumentation nicht genau genug gelesen :) –