django笔试题_Django笔试题
【jianli.jxxyjl.com--笔试题目】
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 <= '20' or num >= '30');
使用Q就可以写成:
from django.db.models import Q
from login.models import Order
Order.objects.get(
Q(id >= 20) & (id <= 100),
Q(num <= 20) | (num >= 30)
)
多嘴一句常识性问题啊…建数据库的时候避开各种关键字啊,否则忘了用``标记就报语法错误啊,
Django 笔试题篇3
Django中想验证表单提交是否格式正确需要用到Form中的哪个函数?
is_valid
函数
方法,用于检查表单提交是否正确。
Django取消级联删除
这个文档写的比较清楚:
user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
并且 SET_NULL 只有在 null 为True的时候,才可以使用。
Django中如何在Model保存前做一定的固定操作,比如写一句日志?
关键词: 信号
利用Django的Model的Signal Dispatcher, 通过django.db.models.signals.pre_save 方法,在事件发生前,
发射
触发信号,这一切都被调度中的receiver方法深藏功与名的保存了。
信号的处理一般都写在Model中,举个例子:
import logging
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
class Order(models.Model):
logger = logging.getLogger(__name__)
@receiver(pre_save, sender=Order)
def pre_save_handler(sender, **kwargs):
# 我们可以在Order这个Model保存之前尽情调戏了:)
logger.debug(",".format(sender, **kwargs))
print 'fuck universe'
这样应该就实现了题中的要求,类似的方法还有比如 pre_init 是在Model实例之前会触发, post_init 在实例之后触发,同理就是 pre_save 和 post_save 了。
Django中如何读取和保存session,整个session的运行机制是什么。
说到session的运行机制,就一定要先说一下cookie这一段信息。一般情况下cookies都是我们的浏览器生成的(显然可以人为修改),用于服务器对户进行筛选和维护,但是这个听上去很好吃的东西,能存的东西有点少而且容易被别人利用。这时候基于cookies的session的意义就比较明显了,在客户端的cookies中我们只保存session id,而将完整信息以加密信息的形式保存到服务器端,这样服务器可以根据session id相对安全的在数据库中查询用户的更细致的信息和状态。
在Django中session和cookies的操作方法一样,如下:
# 保存session
request.session['order_id'] = order_id
# 删除session
del request.session['order_id']
# 读取session
session.get('order_id', False)
-
【c语言经典笔试题】c经典笔试题详细阅读
C是高级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。下面就由小编为大家介绍一下c经典笔试题的文章,欢迎阅读。 c经典笔试题篇1 有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信...
-
【编程猫笔试题】C编程笔试题详细阅读
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。下面就由小编为大家介绍一下C++编程笔试题的文章,欢迎阅读。 C++编程笔试题篇1 一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)...
-
excel笔试题及答案_关于EXCEL的笔试题目详细阅读
Excel中大量的公式函数可以应用选择,是现代很多工作岗位都要用到的。 下面由小编为你提供的关于EXCEL的笔试题目,希望能帮到你。 关于EXCEL的笔试题目(一) 1、在Excel中,下列输入数据属于字符型的是( )。 +A1+3 =SUM(A1:A2) =A1+3 SUM(A1,A2)...
-
东北大学自主招生试题|2021年东北大学自主招生笔试题详细阅读
东北大学始建于1920xx年4月。1920xx年8月至1937年1月,著名爱国将领张学良将军任校长。“九·一八”事变后,东北大学被迫迁徙北平、开封、西安、四川三台等地。下面是小编为你整理的20xx年东北大学自主招生笔试题,希望对你有所帮助! 6月10日,东...
-
[2021年山东省公务员遴选公告最新消息]2021年山东省公务员遴选笔试真题及参考答案详细阅读
虽然20xx年山东省公务员遴选笔试已经过去,但对于即将参加20xx年山东省公务员遴选笔试的小伙伴来说,去年的真题具有很大的参考价值。今天小编要与大家分享的是20xx年山东省公务员遴选笔试真题,希望对大家的学习有帮助!20xx年山东省公务员遴选笔试真题 一、简答(30分每题10分) 1、20x...
-
【c语言指针笔试题】c指针笔试题详细阅读
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。下面就由小编为大家介绍一下c指针笔试题的文章,欢迎阅读。 c指针笔试题篇1 1 变量的指针,其含义是指该变量的_________ a)值 b)地址 c)名 d)一个标志 2 若有语句int *point,a=4;和p...
-
西安交通大学自主招生测试指南|西安交通大学2021年自主招生测试题汇总详细阅读
西安交通大学为中国最早兴办的高等学府之一,肇始于1896年创建于上海的南洋公学,1920xx年改称交通大学(Chiao Tung University),1956年国务院决定交通大学内迁西安,为交通大学西安部分,1959年定名西安交通大学。下面是小编为你整理的西安交通大学20xx年自主招生测试题...
-
西南财经大学自主招生条件|2021年西南财经大学自主招生笔试题详细阅读
西南财经大学是教育部直属的国家“211工程”和“985工程”优势学科创新平台建设的全国重点大学,也是国家教育体制改革试点高校。下面是小编为你整理的20xx年西南财经大学自主招生笔试题,希望对你有所帮助! 20xx年西南财经大学自主招生笔试题 财经...
-
excel考试题目_EXCEL笔试题目详细阅读
Excel中大量的公式函数可以应用选择,使用Microsoft Excel可以执行计算,分析信息并管理电子表格或网页中的数据信息列表与数据资料图表制作,可以实现许多方便的功能,带给使用者方便。下面就由小编为大家介绍一下EXCEL笔试题目的文章,欢迎阅读。 EXCEL笔试题目篇1 1 Exc...
-
【java开发笔试题】关于JAVA的笔试题有哪些详细阅读
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。下面是小编为你整理的JAVA笔试题150例,希望对你有所帮助! JAVA笔试题150例 一、Java基础方面 1、作用域public,private,protected,以及不写...