首页 > 其他 > 详细

模型层补充

时间:2019-10-28 23:07:09      阅读:71      评论:0      收藏:0      [点我收藏+]

模型层补充

一、IntegerField中choices参数

在数据库中往往有一些,几个固定结果的字段,比如,姓名男女,这是就可以用choices参数,对指定字段在数据库中存储

# models.py
class Userinfo(models.Model):
    username = models.CharField(max_length=30)
    password = models.CharField(max_length=30)
    
    choices = (
        (1, 'male'),
        (2, 'female'),
    )
     """
    1. 如果存在上面元组中数字会取出什么值
    2. 如果存的数字不在元组范围内,会取出什么值
       数字没有对应关系也可以存
    """
    gender = models.IntegerField(choices=choices)
    

# 数据库中数据
1   randy    123    1
2   老王   324    2
3   小王   234    3
#test.py
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ajax.settings")
    import django

    django.setup()

    from app import models
    user_obj = models.Userinfo.objects.filter(pk=1).first()
    print(user_obj.username)
    print(user_obj.password)
    # 针对choices字段,如果你想要获取数字对应的中文,你不能直接点字段
    # 固定句式 数据对象.get_字段名_display() 当没有对应关系的时候,该句式获取到的还是数字
    print(user_obj.get_gender_display())

randy
123
male

总结:

  • 固定获取对应字段方式,数据对象.get_字段名_display()
  • 获取gender值与choise对应,则获取与之对应的字段值,如果不存在则返回本身的值
  • 可以存在choise没有队形的字段

例如:

  
record_choices = (('checked', "已签到"),
                  ('vacate', "请假"),
                  ('late', "迟到"),
                  ('noshow', "缺勤"),
                  ('leave_early', "早退"),
                 )
record = models.CharField("上课纪录", choices=record_choices, default="checked", 
    

score_choices = ((100, 'A+'),
                (90, 'A'),
                 (85, 'B+'),
                 (80, 'B'),
                 (70, 'B-'),
                 (60, 'C+'),
                 (50, 'C'),
                 (40, 'C-'),
                 (0, ' D'),
                  (-1, 'N/A'),
                  (-100, 'COPY'),
                  (-1000, 'FAIL'),
                )
score = models.IntegerField("本节成绩", choices=score_choices, default=-1)

二、MVC框架和MTV框架

MVC框架

MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。

技术分享图片

Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性。

Django框架的不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),也就是MTV框架。

模型: 负责业务对象与数据库的映射(ORM),视图: 负责与用户的交互(页面),控制器: 接受用户的输入调用模型和视图完成用户的请求

Django的MTV模式

Model(模型):负责业务对象与数据库的对象(ORM)

Template(模版):负责如何把页面展示给用户(html)

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

Django框架图示

技术分享图片

三、Django的请求生命流程图

技术分享图片

模型层补充

原文:https://www.cnblogs.com/randysun/p/11755797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!