Python POST не работает - PullRequest
       34

Python POST не работает

0 голосов
/ 10 февраля 2012

Я пытаюсь отправить данные POST из скрипта Python в URL. Вот код:

def createperson(self,name=None):
        SERVER_BASE_ADDR = 'http://localhost:8000/'
        postdata = urllib.urlencode({'name':name})
        req = urllib2.Request(SERVER_BASE_ADDR + 'people/add')
        fd = urllib2.urlopen(req,postdata)
        return name

Но это возвращает

HTTPError: HTTP Error 500: INTERNAL SERVER ERROR

Добавление человека в URL - это хорошо. Есть идеи?

EDIT

На стороне сервера используются декораторы django для обработки POST и GET.

@require_http_methods(["GET", "POST"])
def add(request):
       if request.method == "POST":
           #do stuff with post data

Разве вышеприведенный код Python не совпадает с отправкой формы в шаблон HTML? Если он такой же, то не должны ли обработчики обрабатывать его так же?

Спасибо

Решено с помощью:

c = urllib2.build_opener()
postdata = urllib.urlencode({'name':name})
r = c.open(url,postdata)

Другой подход, но делает свою работу. Спасибо за все ваши ответы.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Ошибки HTTP 500, безусловно, являются внутренними ошибками сервера.Проблема возникает на сервере, как указывал @dlutxx.

Для дальнейшей отладки, я думаю, вам следует проверить ваш обработчик Django.Если это действительно работает для запросов GET, но не для запросов POST, возможно, вам следует взглянуть на различия между обработчиком GET и обработчиком POST.Django docs ) вместо stdout.

2 голосов
/ 10 февраля 2012

Ошибка HTTP 500 означает, что проблема возникает не на скрипте Python на стороне клиента, а на стороне сервера.

Проверьте код на стороне сервера, возможно, он читает данные только из GET, а не POST.

...