1

urlconf とビューは次のとおりです。

url(r'^register/$',
    register,
    { 'backend': 'registration.backends.default.DefaultBackend' },
    name='registration_register'),



def register(request, backend, success_url=None, form_class=None,
             disallowed_url='registration_disallowed',
             template_name='registration/registration_form.html',
             extra_context=None):

私がやりたいことは、ユーザーを登録ページにリダイレクトし、success_url を指定することです。reverse('registration.views.register', kwargs={'success_url':'/test/' }) を試しましたが、うまくいかないようです。私は何時間も試みてきましたが、それを正しく理解することができません。ありがとう

4

2 に答える 2

1

パラメータでreverse()を指定できるようにしたい場合は、それらのパラメータを URL 構成自体 (正規表現) で定義する必要があります。何かのようなもの:

url(r'^register/(?P<success_url>[\w\/]+)/$',
    register,
    { 'backend': 'registration.backends.default.DefaultBackend' },
    name='registration_register'),

その URL セクションを() で囲むことができますか? オプションにする (単純な register/ にも一致するように) argskwargsの違いは、args では名前なし/名前付きの URL パラメーターを指定できるのに対し、kwargs では名前付きのみを指定できることです。そう:

r'^register/(?P<success_url>\w+)/$'
reverse('url_name', args=[my_success_url])
reverse('url_name', kwargs={'success_url': my_success_url}) // both work and do the same

r'^register/(\w+)/$'
reverse('url_name', args=[my_success_url]) // only this works

編集: success_url パラメーターの場合、相対 URL に可能な GET パラメーターを含め、完全な相対 URL と一致させたい場合実際の正規表現はかなり複雑になる可能性があります。(未テスト) のようなもの:

r'^register/(?P<success_url>[\w\/]+(((\?)([a-zA-Z]*=\w*)){1}((&)([a-zA-Z]*=\w*))*)?)/$'
于 2010-06-07T13:30:34.857 に答える
0

編集:申し訳ありませんが、質問を完全に読み違えました-関数定義を見ていませんでした。実際、ここでの問題は、URLconf が、success_url を動的に設定できないように設計されていることです。extra_contextディクショナリ、つまり現在定義しているディクショナリを介して関数に明示的に渡す必要がありますbackend。このパラメーターを受け入れる URL 自体には何もないため、そこでハードコーディングする必要があります。

于 2010-06-07T12:08:07.177 に答える