django POST无法返回字符串

时间:2015-04-20 16:31:34

标签: python django django-views

我尝试测试我的服务器并使用django与android客户端连接。现在我的代码是

from django.http import HttpResponse

def first_page(request):
    if request.method == 'POST':
        return HttpResponse('you are post method')

android客户端帖子我的服务器总是500响应。并且如果更改方法。并使用if request.method == 'GET:'它工作...我很困惑发生了什么... 'POST方法不能使用HttpResponse

更新我的问题: 我们使用java来POST我的django server.and返回错误作为打击

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(Unknown Source)
    at java.net.URLConnection.getContentType(Unknown Source)

可以帮助我们吗?

3 个答案:

答案 0 :(得分:1)

我会让你的观点更加健壮,以确保你不会忽视一个愚蠢的错误。您的视图应始终返回HttpResponse对象,因此请在if块之后添加一个返回值,如下所示:

from django.http import HttpResponse, HttpResponseBadRequest

def first_page(request):
    if request.method == 'POST':
        return HttpResponse('you are post method')
    return HttpResponseBadRequest('Request type {} is not allowed'.format(request.method))

或者添加django的内置请求类型装饰器,以便在您的视图代码运行之前需要一个帖子:

from django.http import HttpResponse
from django.views.decorators.http import require_POST

@require_POST
def first_page(request):
    return HttpResponse('you are post method')

然后确保将settings.DEBUG设置为True并查看从Android客户端获得的内容。

答案 1 :(得分:0)

您是否已将CSRF豁免功能包括在内?

@csrf_exempt 
def my_method(request):

答案 2 :(得分:0)

哦!!!!我解决了我使用django 1.77并且有很多中间件默认加载! #中间件没问题!