我想要做什麼:Django的形式分派方法:值錯誤:視圖返回無替代的HttpResponse
我檢查,如果用戶是從「支持」組之前,他可以查看頁面。如果不是,我想在響應頁面中向用戶顯示正確的消息。 我有group_required裝飾器應用於dispatch()方法的視圖,檢查用戶是否來自支持組。
我已經試過:
https://stackoverflow.com/a/29744943/2286762 但仍然得到ValueError異常。
我的代碼
view.py
class ScheduledTestView(FormView):
'''
Provides an admin panel interface for creating scheduled tests.
Scheduled test will be created as active=False intially.
'''
serializer_class = TestShortSerializer
template_name = 'admin/scheduled_test.html'
form_class = ScheduledTestForm
@method_decorator(group_required(['support']))
def dispatch(self, request, *args, **kwargs):
return super(ScheduledTestView, self).dispatch(request, *args, **kwargs)
group_required功能
def group_required(group_names):
"""
group_name will be the list of group name
"""
def decorator(func):
@wraps(func, assigned=available_attrs(func))
def inner(request, *args, **kwargs):
user = request.user
if user.is_authenticated():
if (user.groups.filter(name__in=group_names) and user.is_staff) or user.is_superuser:
return func(request, *args, **kwargs)
return redirect_to_login('/admin/')
return inner
return decorator
錯誤
GET 請求URL:http://localhost:8000/admin/support/scheduled_test/
Django的版本:1.8.4
異常類型:ValueError異常
異常值:
視圖support.views.ScheduledTestView沒有返回一個HttpResponse對象。它返回None而不是。異常位置:/home/kishan/.virtualenvs/kishan_pal/local/lib/python3.4/site-packages/django/core/handlers/base.py在get_response,線151
如果用戶未通過身份驗證,「inner」會返回什麼內容? –
這是問題所在。感謝您指出錯誤。 – Kishan