美文网首页js css html
Django 与前端配合技巧1

Django 与前端配合技巧1

作者: alue | 来源:发表于2023-01-10 21:32 被阅读0次

在Django中定义模型, 常常会给出verbose_name, 一方面帮助自己理解字段含义; 另一方面,能够给django admin 用于字段显示.

class Meeting(models.Model):  
    CATEGORY_CHOICES = (  
        ('0', '类型1'),  
        ('1', '类型2'),  
    )  
 
  
    name = models.CharField(max_length=100, verbose_name='名称')  
    datetime = models.DateTimeField('时间')  
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=1, verbose_name='类型')

如果前端来写这个模型的CRUD, 还需要再次定义模型,包括字段以及其显示名称. 这里明显有个重复工作.
理论上, 既然django admin能够自动生成CRUD, 我们自己写的前端, 也应该能够具备这种能力. 如何获取这种能力呢?

Django 模型类的 _meta字段给我们提供了所需信息.例如,想要知道模型有哪些字段,以及字段的显示, 可以增加一个类方法如下:

class Meeting(models.Model):  
    CATEGORY_CHOICES = (  
        ('0', '类型1'),  
        ('1', '类型2'),  
    )  
 
  
    name = models.CharField(max_length=100, verbose_name='名称')  
    datetime = models.DateTimeField('时间')  
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=1, verbose_name='类型')

    @classmethod  
    def dictionary(cls):  
        return {f.name: f.verbose_name for f in cls._meta.fields}

>>> Meeting.dictionary()
{'id': 'ID', 'name': '名称', 'datetime': '时间', 'category': '类型'}

把这个数据送给前端, 前端就能够自动获取字段信息.

当然, 如果进一步挖掘, 还可以给前端提供更为丰富的信息, 例如字段类型/校验信息/候选项/外键关联等信息. 把这些做到极致, 就相当于实现了前后端分离条件下的Django admin.

但这个思路的缺点也是显而易见的, 与Django admin在服务端渲染不同, 这个实现方案中, 页面在运行时才能得到渲染数据, 性能可能会有损失.

相关文章

网友评论

    本文标题:Django 与前端配合技巧1

    本文链接:https://www.haomeiwen.com/subject/lmjmcdtx.html