Я пытаюсь создать веб-сервис в Django. По какой-то причине он работает в запросе GET, но не как POST (это мое требование). У меня есть ниже URL:Django webservice для данных POST
url(r'^rest/user/(.*)/(.*)/$', 'rest.views.user.user')
Таким образом, если пользователь должен был отправить сообщение /rest/user/ANY_CHARACTER/ANY_CHARACTER/
, он будет идти к следующей функции:
def user(request, string1, string2):
if request.method == "POST":
return HttpResponse(string1 + ' ' + string2)
else:
return HttpResponse('error')
Everytime Я посылаю запрос GET, я получая error
(что правильно), но каждый раз, когда я отправляю тот же URL-адрес, что и POST, я получаю сообщение об ошибке HTTP 500. Здесь что-то не хватает?
EDIT
Журнал ошибок в терминале имеется следующее: [02/Jul/2012 19:13:57] "POST /rest/user/hi/hi HTTP/1.1" 500 61994
Однако, когда я посылаю ту же команду, как GET, я не получаю никаких ошибок ... который очень странно.
EDIT 1
Я заметил ошибку ниже, когда я отправить запрос POST, он работает на всех других типов:
<p>Reason given for failure:</p>
<pre>
CSRF token missing or incorrect.
</pre>
<p>In general, this can occur when there is a genuine Cross Site Request Forgery, or when
<a href='http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ref-contrib-csrf'>Django's
CSRF mechanism</a> has not been used correctly. For POST forms, you need to
ensure:</p>
Мой вопрос ... Как обрабатывать это для запросов webservice? Извините, попытался найти это, но есть ли способ обойти CSRF для запросов RESTful webservice?
Журнал ошибок говорит ...? –
Я видел, как это случалось раньше для аналогичной ситуации ... он просил CSRF-защиту в POST, работает ли она только в GET или что-то другое, кроме POST? (т. е. GET, PUT и т. д.) – KVISH
Да. Я только что попробовал PUT, и это сработало. Сообщение, которое я получаю от POST, говорит CSRF ... только что заметил. Я отредактирую ошибку. – KVISH