我正試圖重構我的Django項目。 因此,我想從重構:基於Django類的視圖中的身份驗證用戶
@api_view([GET, POST])
@permission_classes((IsAuthenticated, VehiclePermissions,))
def inactive_vehicle_view(request):
if request.method == "GET":
con = CBaseUtil.get_prod_instance()
vehicle_bo = VehicleBO()
dongle_dao = OBDDongleDAO(con)
since_days = int(request.GET.get("since", 28))
vehicles = vehicle_bo.find_vehicles_by_user_context(request.user.details)
return Response(vehicles, status=status_code, headers=get_headers(request))
要基於類觀點是這樣的:
class InactiveVehicleView(View):
@authentication_classes((BasicAuthentication, WebsiteAuthentication))
@permission_classes((IsAuthenticated, VehiclePermissions,))
def dispatch(self, *args, **kwargs):
return super(InactiveVehicleView, self).dispatch(*args, **kwargs)
def get(self, request):
con = CBaseUtil.get_prod_instance()
vehicle_bo = VehicleBO()
dongle_dao = OBDDongleDAO(con)
since_days = int(request.GET.get("since", 28))
vehicles = vehicle_bo.find_vehicles_by_user_context(request.user.details)
return Response(vehicles, status=status_code, headers=get_headers(request))
我現在面臨的問題是,我不能像老用戶的詳細信息版本由request.user.details作爲WSGI-Request不包含屬性用戶。我想我做了一些錯誤的裝飾,但我無法弄清楚。
url(r'^vehicles/inactive/?$', InactiveVehicleView.as_view())
有沒有人有一個想法,我做錯了什麼與認證和/或裝飾:
僅供參考該視圖的URL這樣的映射?
對,我也試過把api_view裝飾器兩個,但這沒有任何問題。 – Igle
也許這就是你需要的https://docs.djangoproject.com/en/1.8/topics/class-based-views/intro/#decorating-the-class – danielcorreia
@danielcorreia我已經嘗試實現以下基於類的視圖文檔。但是沒有提示如何使用authentication_classes和permission_classes修飾器以及如何獲取已認證用戶的數據。 – Igle