目录

51、Django中filter和exclude的区别?

两者取到的值都是QuerSet对象,filter选择满足条件的,exclude:取反,选择不满足条件的

52、Django中values和values_list的区别?

values:queryset类型的列表中是字典

values_list:queryset类型的列表中是元组

53、如何使用django orm批量创建数据?

用bulk_create()

objs=[models.Book(title="图书{}".format(i+15)) for i in range(100)]  # 100条数据列表
models.Book.objects.bulk_create(objs) # 一次批量插入

54、Django的Form和ModeForm的作用?

Form组件的主要功能如下:
生成页面可用的HTML标签 ——>只能生成获取用户信息的那些input标签等
对用户提交的数据进行校验,返回错误提示信息
保留页面上用户输入的内容 ModelForm组件,这个组件主要就是将model与Form组件的功能结合起来,可以更加便捷的对数据进行添加、编辑以及数据的验证操作。相对于单独的Form组价来说要方便很多。但是Form组件会比这个ModelForm组件更加灵活,如果在使用Django做web开发过程中验证的数据和数据库字段相关(可以对表进行增、删、改操,注意 Many to many字段,也可以级联操作第3张关系表;),建议优先使用ModelForm,用起来更方便些,但是在使用ModelForm的时候慎用fields='__all__',获取数据库所有字段势必造成资源的浪费。

55、Django的FORM组件中,如果字段中包含choice参数,请使用两种方式 实现数据源实时更新

1.重写构造函数

def__init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")

2.利用ModelChoiceField字段,参数为queryset对象

authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all())//多选

56、Django的model中的ForeignKey字段中的on_delete参数有什么作用?

删除关联表中的数据时,当前表与其关联的field的操作
django2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常

57、基于Django使用ajax发送post请求时,有哪些方法携带csrftoken?

1.后端将csrftoken传到前端,发送post请求时携带这个值发送

data: {
csrfmiddlewaretoken: '{{ csrf_token }}'
},

2.获取form中隐藏标签的csrftoken值,加入到请求数据中传给后端

data: {
csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val()
},

3.cookie中存在csrftoken,将csrftoken值放到请求头中

headers:{ "X-CSRFtoken":$.cookie("csrftoken")}

58、Django的缓存怎么使用redis?如何配置?

# 设置django缓存存放位置为redis数据库,并设置一个默认(default)选项,在redis中(配置文件/etc/redis/redis.conf)开启了RDB持久化储存
# pip install django-redis, 然后在视图中可以通过 from django_redis import get_redis_connection 这个方法和redis数据库进行连接
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
# redis服务器的ip地址及端口号,及数据库序号,redis一共有15个数据库 0~15
"LOCATION": "redis://127.0.0.1:6379/6",
     # "LOCATION": "redis://:passwordpassword@47.193.146.xxx:6379/0", # 如果redis设置密码的话,需要以这种格式进行设置,host前面是密码
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}

59、Django路由系统中name的作用?

name:对URL路由关系进行命名

60、Django的模板中filter、simpletag、inclusiontag的区别?

filter的用法:
#先引入template
from django import template
#声明register,名字只能是register
register = template.Library() #带名字的装饰器,调用的时候用起的名字 如dsb
@register.filter(name='dsb')
def add_sb(value, arg):
return "{}_{}abc".format(value, arg) @register.filter
def add_sb(value, arg):
return "{}_{}_abc".format(value, arg) 自定义simpletag和自定义inclusion_tag
1. 在app下创建一个名叫templatetags的python包
2. 在templatetags里建一个py文件 simpletag的用法: 和自定义filter类似,只不过接收更灵活的参数。

61、Django-debug-toolbar的作用?

django开发调试工具

django-debug-toolbar是一组可配置的面板,可现实有关当前请求/响应的各种调试信息,斌在单击时显示有关面板内容的更多详细信息。

62、django中如何实现单元测试?

Django的单元测试使用python的unittest模块,这个模块使用基于类的方法来定义测试。类名为django.test.TestCase,继承于python的unittest.TestCase。

执行目录下所有的测试(所有的test*.py文件):运行测试的时候,测试程序会在所有以test开头的文件中查找所有的test cases(inittest.TestCase的子类),自动建立测试集然后运行测试。

$ python manage.py test

执行animals项目下tests包里的测试:

$ python manage.py testanimals.tests

执行animals项目里的test测试:

$ python manage.py testanimals

单独执行某个test case:

$ python manage.py testanimals.tests.AnimalTestCase

单独执行某个测试方法:

$ python manage.py testanimals.tests.AnimalTestCase.test_animals_can_speak

为测试文件提供路径:

$ python manage.py testanimals/

通配测试文件名:

$ python manage.py test--pattern="tests_*.py"

启用warnings提醒:

$ python -Wall manage.py test

63、解释ORM中dbfirst和codedirst的含义?

Code First From Database(DbFirst)数据库先行

Code First(代码先行)

64、Django中如何让根据数据库表生成model类?

创建一个项目,修改setting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致

1.运行下面代码可以自动生成models模型文件

python manage.py inspectdb

2.把模型文件导入到app中

创建app

django-admin.py startapp app

将模型导入创建的app中去

python manage.py inspectdb > app/models.py

65、使用orm和原生sql的优缺点?

相对来说,ORM的缺点就是SQL的优势地方,而优点也是sql劣势地方

优点
方便的使用面向对象,语句清晰
防注入『这个其实不算ORM的核心,因为比如Phalcon的SQL形式写法也可以防注入』
方便动态构造语句,对于不同的表的相同操作采用多态实现更优雅
一定程度方便重构数据层『比如改表名,字段名等』
设置钩子函数
缺点
不太容易处理复杂查询语句
性能较直接用SQL差

Django面试集锦(51-65)的更多相关文章

  1. Django面试集锦(1-50)

    目录 1.Django ORM查询中select_related和prefetch_related的区别? 2.only与defer的用法? 3.Django ORM是什么? 4.Django创建项目 ...

  2. iOS面试集锦3

    1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...

  3. django面试八

    1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. #2.Dja ...

  4. django面试六

    Redis缓存击穿.缓存雪崩.缓存重建 回答参考: 缓存击穿: 当一个连接访问缓存数据库中不存在的数据时,会直接通过缓存数据库到后端数据库中查找数据,但如果有大量连接在查询一个不存在的数据,就会有大量 ...

  5. django面试五

    http和https的区别https协议需要到ca申请证书,一般免费证书很少,需要交费. 注:CA - certificate authority,身份认证,权威机构认证,CA认证: http是超文本 ...

  6. django面试二

    33. django的缓存能使用redis吗?如果可以的话,如何配置? #1.安装 pip install django-redis#2.在stting中配置CACHES,可以设置多个缓存,根据名字使 ...

  7. iOS 面试集锦

    是第一篇: 1.Difference between shallow copy and deep copy?
浅复制和深复制的区别?
答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身.
深层 ...

  8. Python开发面试集锦

    我正在编写一套python面试开发集锦,可以帮忙star一下,谢谢! 地址:GitHub专栏

  9. python基础面试集锦(51-100)

    目录 51.把aaabbbcccdd这种形式的字符串压缩成a3b3c3d2的形式? 52.给你一个字符串'abc',打印出该字符串的所有排列组合? 53.执行以下代码后,x的值为? 54.对于一个非空 ...

随机推荐

  1. Java集合使用之next方法与remove方法 | Java集合使用之remove方法使用易错

    Iterator接口的remove方法将会删除上次调用next方法时返回的元素. next方法和remove方法的调用具有相互依赖性,如果调用remove方法前没有调用next方法是不合法的. 错误使 ...

  2. jenkins介绍和安装

    1.jenkins介绍 1.1 Jenkins概念: • Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台. • 这是一个免费的源代码,可以处理任何类型的构建或持 ...

  3. docker-管理数据

    管理Docker中的数据 默认情况下,在容器内创建的所有文件都存储在可写容器层中.这意味着: 当该容器不再运行时,数据不会持久存在,如果另一个进程需要,则可能很难从容器中获取数据. 容器的可写层紧密耦 ...

  4. Hexo 中使用 emoji 和 tasks

    替换为 markdown-it 今天在迁移博客项目的时候,发现原来在 hugo 中可以使用的 Emoji 和 tasks 功能都不能正常使用了,查询了一下原因,主要是因为 hexo 默认的解析器是 h ...

  5. doc_values VS stored field

    doc_values 按列存储,按docId排序,在query阶段使用,直接根据docId获取具体field的value,用来排序,聚合等. stored field按文档存储,按docId排序,一条 ...

  6. 【转】Java面试题:多继承

    招聘和面试对开发经理来说是一个无尽头的工作,虽然有时你可以从HR这边获得一些帮助,但是最后还是得由你来拍板,或者就像另一篇文章“Java 面试题:写一个字符串的反转”所说: 面试开发人员不仅辛苦而且乏 ...

  7. 微信小程序点击图片放大

    WXML: <view class='imgList'> <view class='imgList-li' wx:for='{{imgArr}}'> <image cla ...

  8. 字典树(增删改查 HDU 5687)

    度熊手上有一本神奇的字典,你可以在它里面做如下三个操作: 1.insert : 往神奇字典中插入一个单词 2.delete: 在神奇字典中删除所有前缀等于给定字符串的单词 3.search: 查询是否 ...

  9. 查看JVM参数

    如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体值是多少? jps jinfo jvm的参数类型: 1.标配参数:java -version  ,java -help , jav ...

  10. numpy基本知识

    """np.arrayobject 数组或嵌套的数列dtype 数组元素的数据类型,可选copy 对象是否需要复制,可选order 创建数组的样式,C为行方向,F为列方向 ...