PythonスクリプトからDjangoアプリに辞書を渡す必要があります。したがって、私は以下を使用しています:PythonスクリプトからdjangoのURLに辞書をポストする方法は?
def sendDataToApp(rssi_readings):
url = 'http://localhost:8000/world/rssi_import'
data = urllib.urlencode(rssi_readings)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
rssi_readingsは実際の辞書です。今、私が設定したURLを持っているし、次のように定義されたビューを持っている私のDjangoのアプリで:
def rssi_import(request, rssi_readings):
print "Test"
cache.set('rssi_angle_reading', rssi_readings)
return HttpResponse("Data submitted")
私もプリントが表示されませんので、私は、サーバーがデータを扱うことができないと思います。その後、データをキャッシュに保存する必要がありますが、これは問題ではありません。
私のdevのサーバーが稼働しているが、私は、スクリプトを実行すると、私は次のようにHTTPエラー500を取得:
File "autoorientation.py", line 245, in <module>
main()
File "autoorientation.py", line 241, in main
sendDataToApp(rssi_readings)
File "autoorientation.py", line 199, in sendDataToApp
response = urllib2.urlopen(req)
File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 406, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 519, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 444, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 527, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: INTERNAL SERVER ERROR
私は誰にも問題があるものを私に伝えることができます期待していましたか?単純な文字列を投稿しようとしても機能しませんでした。ありがとうございました!!!
編集:
ここは私のurl.pyです。私はそれが2つのファイルに分割していますが、これは重要なものでなければなりません:
from django.conf.urls.defaults import patterns, include, url
urlpatterns = patterns('world.views',
url(r'^$', 'index'),
url(r'^setup/$', 'setup'),
url(r'^redoscan/$', 'redoScan'),
url(r'^rssi_import/$', 'rssi_import'),
)
EDIT2:
[OK]を、私はちょうど今、スクリプトから、要求にデータを送信しないようにしようとしているI実際に何かを得る。 devのサーバーは言う:
[02/May/2012 15:32:46] "GET /world/rssi_import HTTP/1.1" 301 0
[02/May/2012 15:32:46] "GET /world/rssi_import/ HTTP/1.1" 200 14
だから私は、スクリプトが動作することを非常に確信していると私のURLを、何とか愚かなことは、データをどのように処理するかを知りません。
は、データを投稿したときに、CSRFを使用していますか? –
Djangoアプリのログは何を表していますか? –
そして、ちょうど確かに、投稿スクリプトが同じDjangoデベロッパーサーバーで実行されているのではないでしょうか? –