سؤال

ولدي العديد من وجهات النظر مع الديكور @login_required. وانا ذاهب الى استخدام django.core.urlresolvers.reverse () وظيفة لإعادة توجيه لهم.

وكتبت في urls.py:

urlpatterns = ('myapp.views',
    '^(?P<key>[-a-zA-Z0-9]+)/some-operation/$', 'some_operation'),
)

ووفي views.py:

return HttpResponseRedirect(
     reverse('myapp.views.some_operation', kwargs={'key': item.key})
)

وهذا الديكور أن وظيفة عرض some_operation تمت @login_required.

وجانغو يظهر الخطأ التالي:

Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x866782c>' with arguments '()' and keyword arguments '{'key': u'ab9d7x'}' not found.

ويبدو أن جانغو هو محاولة للعثور على عكس مباراة من أجل وظيفة الديكور login_required. كيف يمكنني الحصول على تجنبها من هذه المشكلة؟

هل كانت مفيدة؟

المحلول

ولقد وجدت طريقة أخرى للقيام بذلك من الوثائق جانغو . استخدام "رابط المسمى" مثل هذا:

urlpatterns = ('myapp.views',
    url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/$', 'some_operation', name='myapp-some-operation'),
)

و

reverse('myapp-some-operation', kwargs={'key': item.key})
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top