小编Kil*_*elo的帖子

覆盖django的模型删除方法以进行批量删除

我正在重写Django的模型删除方法,以便删除磁盘中用于图像字段的孤立文件,如下所示:

class Image(models.Model):
    img = models.ImageField(upload_to=get_image_path)
    ...
    def delete(self, *args, **kwargs):
        self.img.delete()
        super(Image, self).delete(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

当我从管理员中删除单个对象时这很好用,但是当我选择多个对象并删除它们时,似乎没有被调用.我已经谷歌搜索了一段时间,但没有找到正确的关键字来得到答案,也没有官方文档似乎谈论这个主题.

django model bulk imagefield

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

在反向代理后面运行的 symfony 应用程序的 URL

我会尽量解释这个场景,因为它看起来有点复杂。

我正在为一个大型组织构建这个网络应用程序,该组织在其服务器上运行着大量其他网络应用程序。当我最终完成开发阶段时,他们要求我向他们发送一个虚拟机,其中包含所有配置并准备运行的东西(Web 应用程序、apache、数据库等),并且,通过某种未知的魔法对我来说(他们谈到了反向代理),他们会让全世界都可以访问它。

所以我把机器寄给他们,他们把它放在http://www.fakedomain.com/fakedirectory 上(注意 /fakedirectory 部分)

现在,这确实将外部请求重定向到在我的虚拟机中运行的网络服务器。问题是我的 symfony 应用程序生成了所有与虚拟机中的 Web 服务器相关的 URL,该虚拟机在根目录(“/”)上运行。但是,用户访问的实际 url 是 /fakedirectory。因此,例如,这就是您访问 /fakedirectory/doc.html 时得到的:

<html>
...
<body>
    ...
    <a href="/anotherdoc.html">A link</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果用户点击“A 链接”,则会导致他出现 404 错误,导致实际 url 应该是 /fakedirectory/anotherdoc.html

在我看来,这应该以某种方式从与虚拟机进行通信的反向代理中解决。但是我客户组织的一名 IT 人员建议,如果我的 symfony 应用程序正确地吐出 url,那会更容易。

所以,在我(可能是错误地)要求 IT 在他们的代理中做一些事情之前,有没有办法在我的虚拟机中解决这个问题?我已经阅读了 symfonys doc 关于请求上下文,特别是这个:

# app/config/parameters.yml
parameters:
    router.request_context.host: www.fakedomain.com
    router.request_context.scheme: http
    router.request_context.base_url: fakedirectory
Run Code Online (Sandbox Code Playgroud)

但这似乎并不适用于整个 symfony 的 url 系统。我还在 apache 的 mod_proxy 和 mod_rewrite 中尝试了一些奇怪的配置,但没有成功。

所以,简而言之,我绝对一无所知,所以任何想法都将不胜感激。提前致谢。

php apache mod-rewrite proxy symfony

5
推荐指数
1
解决办法
1926
查看次数

Rest框架:用于post/put操作的输入和输出数据的不同序列化器

假设我有这些模型:

class Download(MPTTTimeStampedModel):
    endpoint = models.ForeignKey(EndPoint, related_name="downloads",)

class EndPoint(TimeStampedModel):
    name = models.CharField(max_length=100, verbose_name=_(u"Nombre"))
    url = models.CharField(max_length=2000, verbose_name=_(u"Url"))
Run Code Online (Sandbox Code Playgroud)

这些序列化器:

class DownloadSerializer(serializers.ModelSerializer):

    class Meta:
        model = Download
        fields = ('id', 'endpoint')  

    def create(self, validated_data):
        ...

    def update(self, validated_data):
        ...


class EndPointSerializer(serializers.ModelSerializer):

    class Meta:
        model = EndPoint
        fields = ('id', 'name', 'url')

    def create(self, validated_data):
        ...

    def update(self, validated_data):
        ...
Run Code Online (Sandbox Code Playgroud)

这个通用 api 视图:

class DownloadList(generics.ListCreateAPIView):
    queryset = Download.objects.all()
    serializer_class = DownloadSerializer
Run Code Online (Sandbox Code Playgroud)

这将允许我通过发送如下所示的 json 表示来创建下载:

{
    'id': null,
    'endpoint': 19
}
Run Code Online (Sandbox Code Playgroud)

创建后,Web 服务将使用数据库中的 ID …

python django rest web-services django-rest-framework

5
推荐指数
1
解决办法
2366
查看次数

Javascript和Python中的XOR操作之间存在差异

我正在将一个长而丑陋的函数从JS移植到Python,基本上在给定一些输入参数的情况下计算某种哈希字符串.在移植和调整代码之后,做了一些测试,并且(惊喜),我得不到相同的结果.

我做了一些调试,然后到了开始搞乱一切的线路,结果是一个XOR操作.所以,长话短说,我已经分离出一个简单的例子,它显示了如何使用相同的值获得不同的结果.

这是JS代码:

hex_str = "0xA867DF55"
crc = -1349196347
new_crc = (crc >> 8) ^ hex_str
//new_crc == 1472744368
Run Code Online (Sandbox Code Playgroud)

这与Python中的代码相同:

hex_str = "0xA867DF55"
crc = -1349196347
new_crc = (crc >> 8) ^ int(hex_str, 16)
//new_crc == -2822222928
Run Code Online (Sandbox Code Playgroud)

唯一的区别是hex_str在Python中显式转换为整数.

在实际代码中,此计算在for循环内运行.hex_str和crc在每次迭代时都会更新.在前几次迭代中,一切都在python中工作正常,但是当hex_str和crc获得上面显示的值时,一切都开始变得混乱.

javascript python math operators xor

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