乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Django信號(hào)

       印度阿三17 2019-10-08

      Django信號(hào)

      Django中提供了“信號(hào)調(diào)度”,用于在框架執(zhí)行操作時(shí)解耦。通俗來(lái)講,就是一些動(dòng)作發(fā)生的時(shí)候,信號(hào)允許特定的發(fā)送者去提醒一些接受者。

      1、Django內(nèi)置信號(hào)

      ?
      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Model signals ????pre_init??????????????????? # django的model執(zhí)行其構(gòu)造方法前,自動(dòng)觸發(fā) ????post_init?????????????????? # django的model執(zhí)行其構(gòu)造方法后,自動(dòng)觸發(fā) ????pre_save??????????????????? # django的model對(duì)象保存前,自動(dòng)觸發(fā) ????post_save?????????????????? # django的model對(duì)象保存后,自動(dòng)觸發(fā) ????pre_delete????????????????? # django的model對(duì)象刪除前,自動(dòng)觸發(fā) ????post_delete???????????????? # django的model對(duì)象刪除后,自動(dòng)觸發(fā) ????m2m_changed???????????????? # django的model中使用m2m字段操作第三張表(add,remove,clear)前后,自動(dòng)觸發(fā) ????class_prepared????????????? # 程序啟動(dòng)時(shí),檢測(cè)已注冊(cè)的app中modal類(lèi),對(duì)于每一個(gè)類(lèi),自動(dòng)觸發(fā) Management signals ????pre_migrate???????????????? # 執(zhí)行migrate命令前,自動(dòng)觸發(fā) ????post_migrate??????????????? # 執(zhí)行migrate命令后,自動(dòng)觸發(fā) Request/response signals ????request_started???????????? # 請(qǐng)求到來(lái)前,自動(dòng)觸發(fā) ????request_finished??????????? # 請(qǐng)求結(jié)束后,自動(dòng)觸發(fā) ????got_request_exception?????? # 請(qǐng)求異常后,自動(dòng)觸發(fā) Test signals ????setting_changed???????????? # 使用test測(cè)試修改配置文件時(shí),自動(dòng)觸發(fā) ????template_rendered?????????? # 使用test測(cè)試渲染模板時(shí),自動(dòng)觸發(fā) Database Wrappers ????connection_created????????? # 創(chuàng)建數(shù)據(jù)庫(kù)連接時(shí),自動(dòng)觸發(fā)

      對(duì)于Django內(nèi)置的信號(hào),僅需注冊(cè)指定信號(hào),當(dāng)程序執(zhí)行相應(yīng)操作時(shí),自動(dòng)觸發(fā)注冊(cè)函數(shù):

      注冊(cè)信號(hào),寫(xiě)入與project同名的文件夾下的_init_.py文件中,也是換數(shù)據(jù)庫(kù)引擎的地方。

          from django.core.signals import request_finished
          from django.core.signals import request_started
          from django.core.signals import got_request_exception
      
          from django.db.models.signals import class_prepared
          from django.db.models.signals import pre_init, post_init
          from django.db.models.signals import pre_save, post_save
          from django.db.models.signals import pre_delete, post_delete
          from django.db.models.signals import m2m_changed
          from django.db.models.signals import pre_migrate, post_migrate
      
          from django.test.signals import setting_changed
          from django.test.signals import template_rendered
      
          from django.db.backends.signals import connection_created
      
      
          def callback(sender, **kwargs):
              print("xxoo_callback")
              print(sender,kwargs)
      
          xxoo.connect(callback)
          # xxoo指上述導(dǎo)入的內(nèi)容
      View Code
      def my_callback(sender, **kwargs):
          print("Request finished!")
      
      # 方法一:
      from django.core.signals import request_finished
      
      request_finished.connect(my_callback)
      
      # 方法二:
      from django.core.signals import request_finished
      from django.dispatch import receiver
      
      @receiver(request_finished)
      def my_callback(sender, **kwargs):
          print("Request finished!")
      示例
      from django.db.models.signals import pre_save
      from django.dispatch import receiver
      from myapp.models import MyModel
      
      
      @receiver(pre_save, sender=MyModel)
      def my_handler(sender, **kwargs):
          ...
      指定發(fā)送者

      2、自定義信號(hào)

      a. 定義信號(hào)

      在某py文件中定義信號(hào)。

      ?
      1 2 import django.dispatch pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])

      b. 注冊(cè)信號(hào)

      在_init_.py 中注冊(cè)信號(hào)

      ?
      1 2 3 4 5 def callback(sender, **kwargs): ????print("callback") ????print(sender,kwargs) ? pizza_done.connect(callback)

      c. 觸發(fā)信號(hào)

      ?
      1 2 3 from 路徑 import pizza_done ? pizza_done.send(sender='seven',toppings=123, size=456)

      由于內(nèi)置信號(hào)的觸發(fā)者已經(jīng)集成到Django中,所以其會(huì)自動(dòng)調(diào)用,而對(duì)于自定義信號(hào)則需要開(kāi)發(fā)者在任意位置觸發(fā)。

      更多:猛擊這里

      序列化

      關(guān)于Django中的序列化主要應(yīng)用在將數(shù)據(jù)庫(kù)中檢索的數(shù)據(jù)返回給客戶(hù)端用戶(hù),特別的Ajax請(qǐng)求一般返回的為Json格式。

      1、serializers

      ?
      1 2 3 4 5 from django.core import serializers ? ret = models.BookType.objects.all() ? data = serializers.serialize("json", ret)

      2、json.dumps

      ?
      1 2 3 4 5 6 7 8 import json ? #ret = models.BookType.objects.all().values('caption') ret = models.BookType.objects.all().values_list('caption') ? ret=list(ret) ? result = json.dumps(ret)

      由于json.dumps時(shí)無(wú)法處理datetime日期,所以可以通過(guò)自定義處理器來(lái)做擴(kuò)展,如:

      View Code?
      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import json? from datetime import date? from datetime import datetime? ??? class JsonCustomEncoder(json.JSONEncoder):? ???? ????def default(self, field):? ????? ????????if isinstance(field, datetime):? ????????????return o.strftime('%Y-%m-%d %H:%M:%S')? ????????elif isinstance(field, date):? ????????????return o.strftime('%Y-%m-%d')? ????????else:? ????????????return json.JSONEncoder.default(self, field)? ??? ??? # ds = json.dumps(d, cls=JsonCustomEncoder)?
      來(lái)源:https://www./content-4-493801.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多