小编Dom*_*omo的帖子

如何让Django返回JsonResponse而没有额外的引号或引用转义?

使用Django 1.7,每当我在视图中返回以下JsonResponse时:

from django.http import JsonResponse
token = "1$aEJUhbdpO3cNrXUmFgvuR2SkXTP9="
response = JsonResponse({"token": token})
return response
Run Code Online (Sandbox Code Playgroud)

我从Web浏览器/ cURL获得以下HTTP响应:

"{\"token\": \"1$aEJUhbdpO3cNrXUmFgvuR2SkXTP9=\"}"
Run Code Online (Sandbox Code Playgroud)

我想要的,以及我在Django 1.3中所拥有的是:

{"token": "1$aEJUhbdpO3cNrXUmFgvuR2SkXTP9="}
Run Code Online (Sandbox Code Playgroud)

我有两个依赖于使用Django的私有API的移动应用程序,不幸的是他们期待第二种响应,没有额外的引号(围绕整个JSON的引号使它成为一个字符串)并且没有引用转义.

我的问题是,有没有一些内置的方法来强制Django响应不逃避JSON响应?

我编写了以下中间件来实现它,但是......它似乎是一种非常脆弱的蛮力方式:

class UnescapeJSON(object):
    def process_response(self, request, response):
        """
        Directly edit response object here, searching for and replacing terms
        in the html.
        """
        if re.search('^/api/.*', request.path):
            r = response.content
            r = r.replace('\\', '')
            r = r.lstrip('"')
            r = r.rstrip('"')
            response.content = r
        return response
Run Code Online (Sandbox Code Playgroud)

所以我希望有一个更聪明的方法.

背景故事是我正在尝试将旧的遗留代码库从Django 1.3更新为1.8.我目前在我的本地开发环境中使用1.7.Django 1.3以正确的方式返回JSON,没有额外的引号和反斜杠.

以这种方式返回JSON是一件好事:

{"token": "1$aEJUhbdpO3cNrXUmFgvuR2SkXTP9="}
Run Code Online (Sandbox Code Playgroud)

...是我jQuery.post({success:...})用来处理这个JSON响应,它会自动jQuery.parseJSON()为我运行,把它变成一个我可以用点表示法访问的JSON对象. …

python django json

6
推荐指数
2
解决办法
3355
查看次数

Wordpress和Django - 一个域,两个服务器.可能?

我的问题是在一个域下托管Django和Wordpress,但是有两台物理机器(实际上,它们是虚拟机但是差异相同).

假设我在example.com上有一个Django webapp.我想创建一个关于我的webapp的Wordpress博客,所以任何博客页面排名mojo都会回流到我的webapp,我希望博客地址是example.com/blog.我的理解是blog.example.com不会转移所述页面排名mojo.

因为我担心Wordpress安全漏洞会破坏我的Django webapp,所以我想在两台物理上分开的机器上托管Django和Wordpress.

鉴于此,是否可以使用重写规则或反向代理服务器来执行此操作?我知道简单的方法是让我的Wordpress博客成为子域名,但我真的不想这样做.

过去有没有人这样做过,它稳定吗?如果我需要第三台服务器作为专用的反向代理,那就完全没问题了.

谢谢!

python apache django

3
推荐指数
1
解决办法
362
查看次数

标签 统计

django ×2

python ×2

apache ×1

json ×1