分类 Python 下的文章

如何在 Django 模板中输出 "{{" ?


起步

随着 javascript 的壮大,前端也要使用自己的模板引擎了。若变量使用 {{ 包裹的形式,而 {{ 又会被 Django 模板引擎解析。导致 {{ 无法输出到前端,这个时候应该怎么处理?大概有三种方式解决。


字符串在Python内部是如何省内存的


起步

Python3 起,str 就采用了 Unicode 编码(注意这里并不是 utf8 编码,尽管 .py 文件默认编码是 utf8 )。 每个标准 Unicode 字符占用 4 个字节。这对于内存来说,无疑是一种浪费。

Unicode 是表示了一种字符集,而为了传输方便,衍生出里如 utf8 , utf16 等编码方案来节省存储空间。Python内部存储字符串也采用了类似的形式。


Python Web之路Django(七): 好用的 ContentType


Django提供的ContentType实在是太方便了

起步

在一些诸如“收藏”的业务场景下,用户能够收藏不同种类的记录,收藏文章,商品,评论等。如果仅用一张表来存储用户的收藏情况,那么模型中需要两个属性来分别表示类型和主键:

class Collect(models.Model):
    """
    用户收藏表
    """
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)

    target_table = models.CharField(verbose_name='表名')
    object_id = models.IntegerField(verbose_name='目标表中的主键')

本文介绍的也是这种实现形式,但如果用 django 提供的 ContentType 会方便很多。


理解 Python 中的 __init_subclass__


在Python的世界里,几乎所有的东西都是可变的。

起步

类方法 __init_subclass__3.6whatsnew3.6) 引入,作用是可以在不使用元类的情况下改变子类的行为。也就是说它是独立于元类编程的,也能达到编辑其他类的一种手段。那么,如何来理解它呢?