我學習Django的兩個工作,所以我已經建立了一個非常簡單的表單/視圖/ URL例如Django POST/GET,GET工作,POST不從MATLAB(urlread)。使用django.test.client
- Django的1.5.1版本
- MATLAB版R2012A
forms.py
from django import forms
import json
class json_input(forms.Form):
jsonfield = forms.CharField(max_length=1024)
def clean_jsonfield(self):
jdata = self.cleaned_data['jsonfield']
try:
json_data = json.loads(jdata)
except:
raise forms.ValidationError("Invalid data in jsonfield")
return jdata
views.py
from django.http import HttpResponse
from rds.forms import json_input
def testpost(request):
if request.method == 'GET':
form = json_input(request.GET)
if form.is_valid():
return HttpResponse('Were Good Get',mimetype='text/plain')
elif request.method == 'POST':
form = json_input(request.POST)
if form.is_valid():
return HttpResponse('Were Good Post',mimetype='text/plain')
else:
return HttpResponse('Not GET or POST.',mimetype='text/plain')
當我跳進本地機器上的Django的蟒蛇manage.py殼這一觀點被映射到URL中urls.py
url(r'^test2$','rds.views.testpost'),
所以是我可以發出以下命令並獲得預期的響應:
>>> from django.test.client import Client
>>> c = Client()
>>> r = c.post('/test2',{'jsonfield': '{"value":100}'})
>>> print r
Content-Type: text/plain
Were Good Post
>>> r = c.get('/test2',{'jsonfield': '{"value":100}'})
>>> print r
Content-Type: text/plain
Were Good Get
但是,當我在外部機器上跳轉到MATLAB併發出以下命令時。 (請注意,從MATLAB這樣做是一個項目需求)
json = '{"value":100}';
% GET METHOD FOR JSON FORM
[gresponse,gstatus]=urlread('http://aq-318ni07.home.ku.edu/django/test2','Get',{'jsonfield' json});
% POST METHOD FOR JSON FORM
[presponse,pstatus]=urlread('http://aq-318ni07.home.ku.edu/django/test2','Post',{'jsonfield' json});
>> gresponse
gresponse =
Were Good Get
>> presponse
presponse =
''
我已經搜索了一個解決方案,真的找不到任何東西。我碰到這可能是CSRF的一個問題(我仍然認爲這是一個問題)。任何提示或想法將不勝感激。
謝謝。
編輯:
Django是通過Apache公開的,這裏是配置。
################################################
# Django WSGI Config
################################################
WSGIScriptAlias /django /var/django/cdp/cdp/wsgi.py
WSGIPythonPath /var/django/cdp
<Directory /var/django/cdp/cdp>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
################################################
注意,這種形式永遠不需要顯示(無模板)。唯一需要的是一個響應,最終可能是文本狀態,查詢結果(如JSON)或數據(如JSON)。 –