Django1.10 Pythonの新機能です。djangoでwebservicesを提供する際のトラブルpythonをアンドロイドに提供
私はアプリのWebサービスを提供する必要があります。だから、私はPythonのDjangoフレームワークでWebサービスを作成しました。ウェブサービスはiOS
では正常に機能していますが、処理中はandroid
で問題が発生しています。アンドロイドでWebサービスを扱う場合は、Volley
ライブラリを使用してください。
views.py
from django.http import HttpResponseRedirect, HttpResponse
from django.views.decorators import csrf
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from django.db import IntegrityError, connection
from django.views.decorators.cache import cache_control
from django.core.files.images import get_image_dimensions
import json
from json import loads, dump
from models import Gym
@csrf_exempt
def gym_register_web(request):
data = json.loads(request.body)
gN = str(data['gym_name'])
gPh = str(data['gym_phone'])
gE = str(data['gym_email'])
gL = str(data['gym_landmark'])
gAdd = str(data['gym_address'])
exE = Gym.objects.filter(gym_email = gE)
if exE:
status = 'failed'
msg = 'EmailId already exist'
responseMsg = '{\n "status" : "'+status+'",\n "msg" : "'+msg+'"\n}'
return HttpResponse(responseMsg)
else:
gymI = Gym(gym_name = gN, gym_phone = gPh, gym_email = gE, gym_area = gL, gym_address = gAdd)
gymI.save()
data = Gym.objects.get(gym_email = gE)
status = 'success'
dataType = 'gym_id'
val = str(data.gym_id)
responseMsg = '{\n "status" : "'+status+'",\n "'+dataType+'" : "'+val+'"\n}'
return HttpResponse(responseMsg)
- :私は次のコードを使用していたWebサービスの場合
Error Code 500 Internal Server Error
アンドロイドエンドを介してデータをポストするので、できない...
- :エラー発生後
urls.py
from django.conf.urls import url, include
from . import views
from django.views.decorators.csrf import csrf_protect, csrf_exempt
admin.autodiscover()
urlpatterns=[
url(r'^gymRegister/$', views.gym_register_web),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
EDIT: models.py
from django.db import models
from django.contrib import admin
class Gym(models.Model):
gym_id = models.AutoField(primary_key = True)
gym_name = models.CharField(max_length = 100, null=True,default = None)
gym_email = models.CharField(max_length = 100, null=True,default = None)
gym_phone = models.BigIntegerField(null=True,default = None)
gym_area = models.TextField(max_length = 255, null=True,default = None)
gym_address = models.TextField(max_length = 255, null=True,default = None)
gym_latitude = models.CharField(max_length = 100, null=True,default = None)
gym_longitude = models.CharField(max_length = 100, null=True,default = None)
gym_status = models.IntegerField(null=True,default = None)
gym_website = models.CharField(max_length = 255,null=True,default = None)
gym_ladies_special = models.IntegerField(null=True,default = None)
私は 、所望の出力を提供するAdvance REST Client
上のWebサービスをテストし、私は、Webサービスが適切にそうiOS
のために働いてもう一度思い出したいと思い、どこでコードを改善すべきですか...?事前に
感謝:)
EDIT:
{ "key1"="val1", "key2"="val2"}
が代わりにJSON配列にそれを送信するJSONオブジェクトの方法でデータを送信しようと
私のAndroidデベロッパー(キー:値)方法
{
"key1" : "val1",
"key2" : "val2"
}
object
フォームで送信されたデータを取得する方法あなたの「データ」変数いけない場合...
ありがとう
を見せた後、働いていない私は、 'models.py'ファイル...感謝を追加しました...と私はすでに同じコードが' iOS'のために働いていることを述べましたまた、アンドロイドのARCのみの問題についても適切な回答をしてくれます... @ Akas –
モデルは大丈夫です。 iOS、ARC、Androidクライアントは3つの異なるものです。すべてのクライアントがあなたに 'request.body'のデータを送ります。だから、私はあなたのローカルサーバー上のあなたのビューであなたの 'request.bodyを印刷することができれば、request.bodyのデータが正しく取得されているかどうか、またはsomethigがアンドロイドから抜けているかどうかを知るようになるでしょう。 –
大丈夫、アンドロイド側からデータを取得していません... –