Jak odbierać dane json za pomocą żądania HTTP POST w Django 1.6?
Uczę się Django 1.6.
Chcę opublikować jakiś JSON używając HTTP POST request i używam Django do tego zadania do nauki.
Próbowałem użyć request.POST['data']
, request.raw_post_data
, request.body
ale nikt nie pracuje dla mnie.
my views.py is
import json
from django.http import StreamingHttpResponse
def main_page(request):
if request.method=='POST':
received_json_data=json.loads(request.POST['data'])
#received_json_data=json.loads(request.body)
return StreamingHttpResponse('it was post request: '+str(received_json_data))
return StreamingHttpResponse('it was GET request')
Zamieszczam dane JSON używając modułu requests .
import requests
import json
url = "http://localhost:8000"
data = {'data':[{'key1':'val1'}, {'key2':'val2'}]}
headers = {'content-type': 'application/json'}
r=requests.post(url, data=json.dumps(data), headers=headers)
r.text
r.text
powinien wydrukować tę wiadomość i opublikowane dane, ale nie jestem w stanie rozwiązać tego prostego problemu. proszę o informację jak odebrać wysłany dane w Django 1.6?
3 answers
Mylisz kodowanie formularzy i dane JSON. {[1] } jest dla danych zakodowanych w formie. Publikujesz raw JSON, więc powinieneś użyć request.body
.
received_json_data=json.loads(request.body)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-09 12:02:08
Dla python3 musisz najpierw rozszyfrować ciało:
received_json_data = json.loads(request.body.decode("utf-8"))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-29 14:51:32
Utwórz formularz z danymi jako polem typu CharField
LUB TextField
i zatwierdź przekazane dane. podobne pytanie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-05 20:24:50