中文一二三区_九九在线中文字幕无码_国产一二区av_38激情网_欧美一区=区三区_亚洲高清免费观看在线视频

首頁 > 個人簡歷 > 求職簡歷 > 筆試題目 > Django筆試題

Django筆試題

發布時間:2021-05-03

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 <= '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)

主站蜘蛛池模板: 夜夜爽欧美肥妇xxxx | 免费国产乱码一二三区 | 99久久免费精品视频 | 亚洲色婷婷久久精品AV蜜桃久久 | av热久久 | 欧美一二三四五六七区 | 欧美日韩1区2区 | 久久91麻豆精品一区 | 丰满岳跪趴高撅肥臀尤物在线观看 | 正在播放淫亚洲 | 久久国产资源 | 性a欧美片 | 国产狂喷潮在线观看视频应用 | 欧美激情在线播放 | 国产黄色片在线免费观看 | 亚洲精品一区二区三区四区五区 | 国产午夜精品无码一区二区 | 国产欧美日韩一区二区搜索 | 高潮迭起av乳颜射后入 | 欧美无毛大片 | 韩国理伦片一区二区三区在线播放 | 精品无人区一线二线三线区别 | 一区二区三区小视频 | 亚洲人成色77777在线观看大战 | 91免费进入 | 日韩精品成人一区二区在线观看 | 亚洲精品乱码久久久久66 | 欧美射射射 | 浮生影视在线观看 | 91精品观看 | 欧美成人综合在线 | 女人喷液全过程在线观看 | 国产亚洲精品美女久久久久 | 国产女人40精品一区毛片视频 | 亚洲精品在线观看视频 | 出差我被公高潮A片久久 | 欧洲性XXXX免费视频在线观看 | 亚洲AV成人中文无码专区 | 好男人蜜桃av久久久久久蜜桃 | 俺也去操 | 成人国产精品秘?精东传媒 欧美最猛黑人XXXX黑人猛交 |