الديكور login_required وurlresolver.reverse () في جانغو
-
06-07-2019 - |
سؤال
ولدي العديد من وجهات النظر مع الديكور @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})
لا تنتمي إلى StackOverflow