Django笔试题Django笔试题Django笔试题

欢迎光临
我们一直在努力

Django笔试题

  Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。下面就由本站 小编为大家简介一下Django 笔试题的文章,欢迎阅读。

  Django 笔试题篇1

  Django的Model的继承有几种形式,分别是啥?

  一、抽象继承:

  顺便复习OOP思想,继承是面向对象的大前提╮(╯▽╰)╭,抽象类,之所以被创建是用来被继承的;一个类如果包含任何一种抽象办法,那么它就是抽象类;抽象办法一定要在子类中被复写;在继承关系中,抽象类永远在树枝节点上……扯远了,而且对于Python来说,已经没有这么多约束了。回到Django的Model,也一样,当我们需要某些公共办法.字段时,就需要一个父类为其他子类服务,这个父类没有manager,Django也不为这个类创建表,这种继承的定义办法如下:

  class Animal(models.Model):

  name = models.CharField(max_length=50)

  age = models.PositiveIntegerField

  # 下面这句决定了Animal是一个抽象类/Model

  class Meta:

  abstract = True

  class Human(models.Model):

  kind_hearted = models.BooleanField

  sex = models.CharField('sex', choices=(('m','male'), ('f', 'female')), max_length=1)

  上例中,我们的Human子model中,自然包含了name和age的字段,但是呢Animal不能作为正常model使用,由于没有manager,所以也不能实例化、保存。在子类中,不可以建立与这个抽象父类中的相同的字段,Django表示对报错负责。

  二、 正常的继承 , 多重继承 ,Joined映射

  和抽象继承的主要区别是父类这时也可以拥有数据库表了,并不在身为存储公共信息的抽象类了,父类也可以进行实例化,查询等操作了。

  class Country(models.Model):

  name = models.CharField(max_length=10)

  class Province(Country):

  return = models.BooleanField

  三、代理

  即在子类中只能增加办法,而不能增加属性,在不影响父类数据存储的前提下,使子类继承父类,此时子类称为父类的“代理”。比如:

  from django.contrib.auth.models import User

  class Person(User):

  # this makes a class proxy

  proxy = True

  def can_dance(self):

  return True

  # both Yellow and Black can_dance :)

  class Yellow(Person):

  hometown = models.CharField(max_length=30)

  class Black(Person)

  tribe_name = models.CharField(max_length=100)

  我们为Person类增加了一个办法,可以跳舞,并保持了User的数据字段的不变。

  Django 笔试题篇2

  Django的Queryset是啥,objects是啥,objects在哪里可以定义。

  query + set,已经能猜出大概,它对应着数据库中的若干条记录。

  比如有一个叫做Order的模型,在project的根目录下进入shell进行操作:

  $python manage.py shell

  >>>from app.order.models import Order

  >>>type(Order.objects)

  >>>

  >>>order = Order.objects.all

  >>>type(order)

  上述办法很常用,看继承关系去理解Queryset和objets。objects是每个Model默认的manager类,通过manager的办法(也可通过QuerySet的办法得到,当然QuerySet也来自于manager),得到相应的Queryset,用以对数据库

  模型

  字段进行更多的操作。

  objects(manager)办法可以自定义添加,也可以直接赋值覆盖掉默认的管理办法。

  试着添加一个新的管理器的步骤是这样,首先定义一个manager类继承自models.Manager ,并在其中对self进行操作,如下:

  # new manager

  class OrderManager(models.Manager):

  def title_count(self, keyword):

  return self.filter(title__icontains=keyword).count

  class Order(models.Models):

  title = models.CharField(max_length=100)

  #objects = models.Manager

  objects = OrderManager

  def __unicode__(self):

  return self.title

  上述例子中我们把 OrderManager 赋值给了objects,替换了默认的管理器。

  tips:如果增加了新的管理器,且没有替换掉默认管理器,那么默认管理器需要显式的声明出来才可以使用。

  Django中查询queryset时啥情况下用Q?

  在进行相对复杂的查询时,使用 django.db.models.Q 对象。

  比如需要进行复合条件的查询的SQL语句如下:

  SELECT * FROM order WHERE id BETWEEN 20 ADN 100 AND(num = '30');

  使用Q就可以写成:

  from django.db.models import Q

  from login.models import Order

  Order.objects.get(

  Q(id >= 20) & (id

推荐站内搜索:名人传读后感300字、事业单位考试题库、河北省特岗教师报名入口、八个字激励短句、让对方看到暖心的句子、读你作文、2021年高考答案网站、可以专升本的师范类学校有哪些、成考录取分数线、今年考研分数线、

Django笔试题
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:Django笔试题
文章链接:https://678999.cn/137419.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

一路高升范文网

提供各类范文...

联系我们联系我们

登录

找回密码

注册