美文网首页
附录5.习题2

附录5.习题2

作者: __深蓝__ | 来源:发表于2019-04-11 09:46 被阅读0次

    Django中查询queryset时什么情况下用Q方法

    F:对数据本身的不同字段进行操作 如:比较和更新,对数据进行加减操作
    Q:用于构造复杂的查询条件 如:& |操作

    Django中验证表单提交格式是否正确需哪个函数

    form.is_valid() :返回布尔值

    orm如何取消级联

    user = models.ForeignKey(User, blank=True, null=True, on_delete+models.SET_NULL)

    并且SET_NULL只有在null为True的时候,才可以使用。

    Django中如何保存和更新session

    • 保存session
      1 生成随机字符串 ltv8zy1kh5lxj1if1fcs2pqwodumr45t
      2 response.set_cookie("sessionid",ltv8zy1kh5lxj1if1fcs2pqwodumr45t)
      3 在django—session表中创建一条记录:
      session-key:ltv8zy1kh5lxj1if1fcs2pqwodumr45t
      session-data:{"is_login":True,"username":"yuan"}

    • 更新session
      在django—session表中创建一条记录:
      session-key: ltv8zy1kh5lxj1if1fcs2pqwodumr45t
      session-data:被更新的数据

    简述Django对http请求的执行流程

    1. 在接受一个Http请求之前的准备,启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器。
    2. 服务器根据WSGI协议指定相应的Handler来处理Http请求,并且初始化该Handler,在Django框架中由框架自身负责实现这一个Handler。 此时服务器已处于监听状态,可以接受外界的Http请求 当一个http请求到达服务器的时候
    3. 服务器根据WSGI协议从Http请求中提取出必要的参数组成一个字典(environ)并传入Handler中进行处理。
    4. 在Handler中对已经符合WSGI协议标准规定的http请求进行分析,比如加载Django提供的中间件,路由分配,调用路由匹配的视图等。 返回一个可以被浏览器解析的符合Http协议的HttpResponse。

    Django中当用户登录到A服务器进入登陆状态,下次被nginx代理到B服务器会出现什么影响

    之前的登录状态会丢失

    Django是如何处理跨域请求的

    • 启用中间件
    • post请求
    • 验证码
    • 表单中添加{%csrf_token%}标签

    查询集的两大特性?什么是惰性执行

    • 惰性执行、缓存 。
    • 创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用

    查询集返回的列表过滤器有哪些

    • all():返回所有数据
    • filter():返回满足条件的数据
    • exclude():返回满足条件之外的数据,相当于sql语句中where部分的not关键字
    • order_by():排序

    如何获取django urlpatterns里面注册的所有url

    from django.conf.urls import url,include
    from arya.service.sites import site
    from django.urls.resolvers import RegexURLPattern
    from django.urls.resolvers import RegexURLResolver
    from django.shortcuts import HttpResponse
    
    def index(request):
      print(get_all_url(urlpatterns,prev='/'))
      return HttpResponse('...')
    
    def get_all_url(urlparrentens,prev,is_first=False,result=[]):
      if is_first:
    ​    result.clear()
      for item in urlparrentens:
    ​    v = item._regex.strip('^')    #去掉url中的^和')    #去掉url中的^和
    ​    if isinstance(item,RegexURLPattern):
    ​      result.append(prev + v)
    ​    else:
    ​      get_all_url(item.urlconf_name,prev + v)
      return result
    
    urlpatterns = [
      url(r'^arya/', site.urls),
      url(r'^index/', index),
    ]
    

    urls.py中include的作用

    进行路由转发,通常我们会在每个app里,各自创建一个urls.py路由模块,然后从根路由出发,将app所属的url请求,全部转发到相应的urls.py模块中。

    urlpatterns中的name与namespace有什么作用?

    • name,给路由起一个别名
    • namespace,名字空间,防止多个应用之间的路由重复

    如何给一个字段设置一个主键?

    primary_key

    如何设置一个带有枚举值的字典?

    DateTimeField类型中的auto_now与auto_now_add有什么区别

    • DateTimeField.auto_now
      这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。因此这个参数在需要存储“最后修改时间”的场景下,十分方便。需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin中是只读的。
    • DateTimeField.auto_now_add
      这个参数的默认值也为False,设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。

    values()与values_list()有什么区别?

    • values : 取字典的queryset
    • values_list : 取元组的queryset

    selected_related与prefetch_related有什么区别?

    • select_related适用于外键和多对一的关系查询;
    • prefetch_related适用于一对多或者多对多的查询。

    当删除一个外键的时候,如何把与其关联的对应关系删除

    使用on_delete参数

    class Meta中常用的元信息字段有哪些

    app_label
    指定模型类是那个应用程序的
    db_table
    指定自定义数据库表名
    若不提供该参数, Django 会使用 app_label + '_' + module_name 作为表名
    ordering
    告诉Django模型对象返回的记录结果集是按照哪个字段排序




    - end -

    相关文章

      网友评论

          本文标题:附录5.习题2

          本文链接:https://www.haomeiwen.com/subject/ewlziqtx.html