背景:プログラムにデータを追加するには、POSTリクエストを行う必要があります。Django TypeError:object()にはパラメータがありません
私は現在、arduinoによって送信されるデータパケットをシミュレートするために、高度なRESTクライアントを使用しています。 現在、POSTリクエストとしてこれを送信している:
{"cellVoltageLow":28,"cellVoltageHigh":415,"cellVoltageAvg":415,
"cellTempMin":5,"cellTempMax":15,"cellTempAvg":10,"stateOfCharge":50,
"errorBitmap":0,"batteryVoltageIn":420,"motorAmp":200,"usageAmp":210,
"auxAmp":10,"rpmMotor":1000,"uiState":0,"chargingStatus":1,
"motorTemp":15,"inverterTemp":30,"inletTemp":5,"ambientTemp":5,
"chargingAmp":10,"chargingVoltage":420,"apsVoltage":42,
"maxAmpsInCharge":10,"bmsErrorValue":0,"energyDriveAH":1000,
"energyRegenAH":100,"energyChargeAH":10,"energyDischargeAH":10,
"energyDriveWH":1000,"energyRegenWH":10,"energyChargeWH":2300,
"energyDischargeWH":23000,"drivenDistanceCM":100000,
"chargedEnergyWH":1000,"returnedEnergyWH":10000,
"connectedTimeSec":100,"driveTimeSec":240}
私は(CSRFが無効になっている)、このクラスに
def Voltage(request):
global Voltage
if request.method == 'POST':
data = json.loads(request.body.decode('utf-8'))
Voltage.cellVoltageLow = data["cellVoltageLow"]
Voltage.cellVoltageAvg = data["cellVoltageAvg"]
Voltage.cellVoltageHigh = data["cellVoltageHigh"]
Voltage.batteryVoltageIn = data["batteryVoltageIn"]
Voltage.chargingVoltage = data["chargingVoltage"]
Voltage.apsVoltage = data["apsVoltage"]
print("got ur message" + str(request.body))
return HttpResponse("OK")
if request.method == 'GET':
return HttpResponse('{ "cellVoltageLow":' + str(Voltage.cellVoltageLow)
+ '{ "cellVoltageAvg":' + str(Voltage.cellVoltageAvg)
+ '{ "cellVoltageHigh":' + str(Voltage.cellVoltageHigh)
+ '{ "batteryVoltageIn":' + str(Voltage.batteryVoltageIn)
+ '{ "chargingVoltage":' + str(Voltage.chargingVoltage)
+ '{ "apsVoltage":' + str(Voltage.apsVoltage)
+ ' }')
else:
return HttpResponse ('Not allowed')
class Voltage:
cellVoltageLow = 0;
cellVoltageAvg = 0;
cellVoltageHigh = 0;
batteryVoltageIn = 0;
chargingVoltage = 0;
apsVoltage = 0;
これを投稿する場合、私はエラーを取得します。
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
response = get_response(request)
File "C:\Users\user\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\user\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: object() takes no parameters
私はPythonのnoobですので、何が間違っているかについての拡張説明をしてください。
EDIT: functionとclassのクラッシュする名前を置き換えました。私は正しいコードでJSON文字列を作成する知識がないので、JSON文字列を作成する方法も間違っています。
は私もまだ内部エラー500
def voltage(request):
global voltage
if request.method == 'POST':
data = json.loads(request.body.decode('utf-8'))
Voltage.cellVoltageLow = data["cellVoltageLow"]
Voltage.cellVoltageAvg = data["cellVoltageAvg"]
Voltage.cellVoltageHigh = data["cellVoltageHigh"]
Voltage.batteryVoltageIn = data["batteryVoltageIn"]
Voltage.chargingVoltage = data["chargingVoltage"]
Voltage.apsVoltage = data["apsVoltage"]
print("got ur message" + str(request.body))
return HttpResponse("OK")
if request.method == 'GET':
return HttpResponse('{ "cellVoltageLow":' + str(Voltage.cellVoltageLow)
+ '{ "cellVoltageAvg":' + str(Voltage.cellVoltageAvg)
+ '{ "cellVoltageHigh":' + str(Voltage.cellVoltageHigh)
+ '{ "batteryVoltageIn":' + str(Voltage.batteryVoltageIn)
+ '{ "chargingVoltage":' + str(Voltage.chargingVoltage)
+ '{ "apsVoltage":' + str(Voltage.apsVoltage)
+ ' }')
else:
return HttpResponse ('Not allowed')
class Voltage:
cellVoltageLow = 0;
cellVoltageAvg = 0;
cellVoltageHigh = 0;
batteryVoltageIn = 0;
chargingVoltage = 0;
apsVoltage = 0;
EDITを得る:私は@MosesKoledoye応答の助けを借りて、それを修正しました。答えは電圧であった。
私は
def voltage(request):
global voltage
if request.method == 'POST':
data = json.loads(request.body.decode('utf-8'))
Voltage.cellVoltageLow = data["cellVoltageLow"]
Voltage.cellVoltageAvg = data["cellVoltageAvg"]
Voltage.cellVoltageHigh = data["cellVoltageHigh"]
Voltage.batteryVoltageIn = data["batteryVoltageIn"]
Voltage.chargingVoltage = data["chargingVoltage"]
Voltage.apsVoltage = data["apsVoltage"]
print("got ur message" + str(request.body))
return HttpResponse("OK")
if request.method == 'GET':
return HttpResponse('{ "cellVoltageLow":' + str(Voltage.cellVoltageLow)
+ '{ "cellVoltageAvg":' + str(Voltage.cellVoltageAvg)
+ '{ "cellVoltageHigh":' + str(Voltage.cellVoltageHigh)
+ '{ "batteryVoltageIn":' + str(Voltage.batteryVoltageIn)
+ '{ "chargingVoltage":' + str(Voltage.chargingVoltage)
+ '{ "apsVoltage":' + str(Voltage.apsVoltage)
+ ' }')
else:
return HttpResponse ('Not allowed')
class Voltage:
cellVoltageLow = 0;
cellVoltageAvg = 0;
cellVoltageHigh = 0;
batteryVoltageIn = 0;
chargingVoltage = 0;
apsVoltage = 0;
に私のコードを変更して、urls.pyに私はあなたの助けをありがとう、それが想定しているとして、私はOK 200を得る
url(r'^voltage/', views.Voltage, name='Voltage'),
to
url(r'^voltage/', views.voltage, name='Voltage'),
を電圧に電圧を変更することが。 すべての回答に感謝します。
機能とクラスが同じ名前 'Voltage' –
コードreviewyではなく、答えを共有するべきではありませんが、あなたが本当にむしろJSONを構築するために、' json'モジュールを使用する必要があります文字列メソッドよりも。 – RegularlyScheduledProgramming
私はそれを修正することができました。ありがとう@MosesKoledoye –