2017-01-28 3 views
0

と一致しない:reverse_lazyは、クエリ文字列でのUUIDをURLにリダイレクトすることになっていること、私はジャンゴCREATEVIEWを持ってkwargsから

@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}) 

しかしこれはおなじみのエラーを与える:

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/']

奇妙なことは、それは明らかにパターンを見つけるが、まだ一致しないということです。これは私の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'), 
] 

私はそれが仕事をしmysite.com/embedded/activiteiten/status/?unieke_code=470e3a5f-6f52-414e-a431-bf5c6e68509aに行くと不思議なこと。

答えて

2

reverse関数とreverse_lazy関数は、GETパラメータを渡すためのものではありません。それが失敗する理由です。このような

何か作業をする必要があります:

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

サイドノート:Pythonの2では、あなたがurllibはからでurlencodeをインポートする必要があり、とPython 3で、それはurllib.parseに

+0

感謝です!私はドキュメントを十分に読まなかったと思います:) –

関連する問題