2017-08-16 8 views
1

Ich erhalte den FehlerDjango - 1 erforderlich Positions Argument fehlt: 'request'

get_indiceComercioVarejista() missing 1 required positional argument: 'request'

, wenn das Verfahren get_indiceComercioVarejista zuzugreifen versuchen. Ich weiß nicht, was damit nicht stimmt.

Ansichten:

from django.http import JsonResponse 
from django.shortcuts import render, HttpResponse 
import requests 
import pandas as pd 

from rest_framework.views import APIView 
from rest_framework.response import Response 

class ChartData(APIView): 

    authentication_classes = [] 
    permission_classes = [] 

    def get(self, request, format=None): 

     data = { 
      'customer' : 10, 
      'sales': 100 
     } 

     return Response(data) 

    def get_indiceComercioVarejista(self, request, format=None): 
     data = { 
      'customer' : 10, 
      'sales': 100 
     } 
     return Response(data) 

Urls:

from django.conf.urls import url 
from . import views 
from django.contrib.auth.views import login 

urlpatterns = [ 
    url(r'^$', views.home), 
    url(r'^login/$', login, {'template_name': 'Oraculum_Data/login.html'}), 
    url(r'^cancerColo/$', views.cancerColo), 
    url(r'^educacao/$', views.educacao), 
    url(r'^comercio/$', views.comercio), 
    url(r'^saude/$', views.saude), 
    url(r'^api/chart/data/$', views.ChartData.as_view()), 
    url(r'^api/chart/indiceVolumeReceitaComercioVarejista/$', views.ChartData.get_indiceComercioVarejista) 
] 

Kann mir jemand helfen, bitte?

+0

Sie wollen '.get', das zu tun und benutzen' views.ChartData.as_view() 'in Ihrem urls ... (oder haben die Vorbereitung/Versandweg für die apiview die entsprechende get-Methode wählen, ob Sie haben mehr als eins abhängig von welchen Kriterien ...) –

Antwort

0

request wird als erstes Argument übergeben. Ihr erstes Argument ist .

Aus diesem Grunde ist es eine gute Idee wäre, get_indiceComercioVarejista von ChartData Klasse zu extrahieren:

def get_indiceComercioVarejista(request, format=None): 
    data = { 
     'customer' : 10, 
     'sales': 100 
    } 
    return Response(data) 
+0

immer noch nicht funktioniert. Die get-Methode übergibt selbst als erstes Argument und es funktioniert gut. –

+0

Haben Sie die Methode 'get_indiceComercioVarejista' aus der Klasse extrahiert? 'Get' Methode funktioniert, weil Sie es über' as_view mit sind() ', – Siegmeyer

0

Ich denke, der beste Ansatz get_indiceComercioVarejista aus dem APIView zu bewegen wäre, weil APIView dispatchs nur zum regulären http Methoden: get post put patch delete.

z:

view.py

def get_indiceComercioVarejista(request, format=None): 
    data = { 
     'customer' : 10, 
     'sales': 100 
    } 
    return Response(data) 

urls.py

url(r'^api/chart/indiceVolumeReceitaComercioVarejista/$', views.get_indiceComercioVarejista) 

Eine andere Lösung wäre ViewSet zu verwenden, die die empfohlen werden, wenn sie mit DRF arbeiten.

+0

Hat nicht funktioniert. Fehler: Typeerror: as_view() nimmt ein Positions Argument aber 2 wurden –

+0

aktualisiert Antwort gegeben, ich dachte du Viewsets wurden mit – Willemoes

Verwandte Themen