美文网首页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