<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

       注冊

      form組件給input 的標簽 添加樣式類  參見 這篇博客(點擊)

      上傳圖像

      1.解決 一點擊圖像就會直接打開上傳文件的按鈕

       #這兒利用了 label標簽和input的特殊的聯動功能
      <div class="form-group">
                          <label for="avatar">
                              上傳頭像
                              <img id="avatar_img" src="/static/image/default.png" alt="頭像" width="40" height="40">
                          </label>
                          <input type="file" style="display: none" id="avatar">
                      </div>

       

      jequery 注意: 返回false的情況:

      1. " " 即:空字符串
      2. 0
      3. -0
      4. undefined
      5. false
      6. null
      7. NaN

      其他的的都返回True ,包括空數組和對象

      日期歸檔

      我們在數據庫中建立一個表datatime,里邊有一個字段time 類型 date

      SELECT * from datetime;

      結果:

      現在有一個需求,我們想要取這個日期的年月,怎么辦,這時候我們就用到了一個時間格式函數 ,注意這個只能用在MySQL數據庫中

      date_format(data,時間格式): DATE_FORMAT() 函數用于以不同的格式顯示日期/時間數據

       

      1.把字符串轉為日期格式

      實例:

      SELECT DATE_FORMAT('2017-09-20 08:30:45',   '%Y-%m-%d %H:%i:%S');

      輸出結果:

      2017-09-20 08:30:45(日期Date格式)

       我們那道題就應該這樣寫:

      select DATE_FORMAT(time,"%Y-%m") as time from datetime;

      結果:

       extra()

      有時候, Django 提供的查詢語法不太夠用. 為了滿足這些邊緣需求, Django 提供了 extra() 結果集修改器 - 一種提供額外查詢參數的機制.

      注意:這個函數只能用querset才能 調

      要注意這些額外的方式對不同的數據庫引擎可能存在移植性問題.(因為你在顯式的書寫SQL語句),除非萬不得已,盡量避免這樣做:

      sql中可以這樣寫

      select name ,(select count(1) from app1_author) as n from  publish

      但是在orm中不能這么寫,只能用extra來實現

      a=models.Publisher.objects.all().extra(select={'n':'select count(1) from app1_author"}) #注意sql語句不要加;加上會報錯

       

       

      ## select提供簡單數據
      # SELECT age, (age > 18) as is_adult FROM myapp_person;
      Person.objects.all().extra(select={'is_adult': "age > 18"})  # 加在select后面
      
      ## where提供查詢條件
      # SELECT * FROM myapp_person WHERE first||last ILIKE 'jeffrey%';
      Person.objects.all().extra(where=["first||last ILIKE 'jeffrey%'"])  # 加一個where條件
      
      ## table連接其它表
      # SELECT * FROM myapp_book, myapp_person WHERE last = author_last
      Book.objects.all().extra(table=['myapp_person'], where=['last = author_last']) # 加from后面
      
      ## params添參數
      # !! 錯誤的方式 !!
      first_name = 'Joe'  # 如果first_name中有SQL特定字符就會出現漏洞
      Person.objects.all().extra(where=["first = %s" % first_name])
      # 正確方式
      Person.objects.all().extra(where=["first = %s"], params=[first_name])

       

       

      extra(select=None, where=None, params=None, 
            tables=None, order_by=None, select_params=None)

       

      有些情況下,Django的查詢語法難以表達復雜的where子句,對于這種情況, Django 提供了extra()QuerySet修改機制 。它能在QuerySet生成的SQL從句中注入新sql語句,extra可以指定一個或多個參數,例如select、where或tables。 這些參數都不是必須的,但是至少要使用一個。注意是Queryset才能調用extra()函數

      參數之select  

      The select 參數可以讓你在 SELECT 從句中添加其他字段信息,它是一個字典,存放著屬性名到 SQL 從句的映射。

      queryResult=models.Article
                 .objects.extra(select={'is_recent': "create_time > '2017-09-05'"})

      結果集中每個 Entry 對象都有一個額外的屬性is_recent, 它是一個布爾值,表示 Article對象的create_time 是否晚于2017-09-05.

      例題:

      date_list=Article.objects.filter(user=user).extra(select={"create_ym":'DATE_FORMAT(create_time,"%%Y-%%m")'})
      .values("create_ym").annotate(c=Count("nid"))\
      .values("create_ym","c")#這里要注意在SQL中表示年月格式是這樣的DATE_FORMAT(create_time,"%Y-%m"),d但是在extra中需要再加一個%

      以后工作中盡量使用extra函數,有很大的bug

      參數之where

      在BBS中如果你用mysql作為數據庫時它有很大的一個bug至少是我認為的,它不能用字段__month來過濾出月份來,但是用字段__year可以過濾出年份來

      比如這個代碼就不能執行

       

      article_list = Article.objects.filter(user=user).filter(create_time__year=year, create_time__month=month)

       

      這里必須用extra的參數where:

       article_list = Article.objects.filter(user=user).extra(where=["YEAR(create_time)=%s and Month(create_time)=%s"],params=[year,month]) #where=列表里寫上
      SQL語句,如果有參數,就用params=列表里寫上參數,注意params這個名稱不能改變

      django事務

      Django的默認事務處理行為

      Django 的默認行為是運行在自動提交模式下。 任何一個查詢都立即被提交到數據庫中,除非激活一個事務。 詳細信息請參考下文

      Django 用事務或者保存點去自動的保證復雜ORM各種查詢操作的統一性,尤其是 delete() 和update() 查詢.

      開啟事務的方式有兩種種詳細見:http://www.rzrgm.cn/clschao/articles/10463267.html

      很好的一篇文章:http://www.rzrgm.cn/HZHST/p/11479732.html

      全局開啟事務和局部開啟事務

      全局開啟事務,很少用,我們來聊一下,局部局開啟事務

       atomic

      Django提供了單一的API來控制數據庫事務。

      在Django中可以通過django.db.transaction模塊提供的atomic來定義一個事務,atomic提供兩種用法,一種是裝飾器,一種是with語句。

      atomic(using=Nonesavepoint=True)
           atomic接受一個using參數,它必須是數據庫的名字。 如果這個參數沒提供,Django默認使用"default"數據庫。

      原子性是由數據庫的事務操作來界定的。 atomic允許我們在執行代碼塊時,在數據庫層面提供原子性保證。 如果代碼塊成功完成, 相應的變化會被提交到數據庫進行commit; 如果執行期間遇到異常,則會將該段代碼所涉及的所有更改回滾。

      atomic塊可以嵌套。 在下面的例子里,使用with語句,當一個內部塊完成后,如果某個異常在外部塊被拋出,內部塊上的操作仍然可以回滾(前提是外部塊也被atomic裝飾過)。

       第一種方式

       

      from django.db import transaction
       with transaction.atomic():
              if pid: #說明是子評論
                  #找到回車鍵的索引
                  a=content.find("\n")
                  #切片
                  content=content[a+1:]
                  comment = Comment.objects.create(content=content, article_id=article_id, user_id=user_id,parent_comment_id=pid)
              #如果是根評論 parent_comment_id 不需要賦值
              else:
                  comment= Comment.objects.create(content=content,article_id=article_id,user_id=user_id)
              Article.objects.filter(pk=article_id).update(comment_count=F("comment_count") + 1)

      詳情見官方文檔

      第二種方式:

      from django.db import transaction
      
      @transaction.atomic
      def viewfunc(request):
          # This code executes inside a transaction.
          do_stuff()

       

       

      前端頁面知識點

      富文本編輯器(kindedit)

      詳細信息見官方文檔

      HTML部分頁面

      <script>
          KindEditor.ready(function (K) {
              window.editor = K.create('#text_area', {
      
                  width: "700px",
                  uploadJson:"/upload_file/",
                  extraFileUploadParams : {
                      "csrfmiddlewaretoken": $("[name='csrfmiddlewaretoken']").val(),
                  }
      
              });
          });
      
      </script>

       

      posted on 2018-02-06 22:02  程序員一學徒  閱讀(450)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 99热精品毛片全部国产无缓冲| 欧美人成精品网站播放| 国产美女久久久亚洲综合| 亚洲av男人电影天堂热app| 自拍偷亚洲产在线观看| 亚洲国产天堂久久综合226114| 久久av高潮av喷水av无码| 亚洲鸥美日韩精品久久| 激情动态图亚洲区域激情| 男女男免费视频网站国产| 国产高清在线不卡一区| 性人久久久久| 99热精国产这里只有精品| 亚洲精品国精品久久99热| 亚洲一级片一区二区三区| 少妇粗大进出白浆嘿嘿视频| 狠狠躁夜夜躁人人爽天天5 | 久久精品国产亚洲αv忘忧草 | 日本精品不卡一二三区| 性欧美老人牲交xxxxx视频| 久久精品视频一二三四区| 中文字幕国产精品日韩| 都市激情 在线 亚洲 国产| 国产粉嫩区一区二区三区| 国产成人综合色就色综合| 国产成人亚洲欧美二区综合| 开心五月婷婷综合网站| 日韩高清亚洲日韩精品一区二区| 无遮挡又黄又刺激的视频| 亚洲暴爽av人人爽日日碰| 丁香婷婷色综合激情五月| 一区二区三区无码高清视频 | 亚洲AV日韩AV高清在线观看| 又湿又紧又大又爽A视频男| 亚洲国产成人无码影片在线播放| 乱人伦中文视频在线| A毛片终身免费观看网站| 日韩午夜福利视频在线观看| 国产一区二区午夜福利久久| 亚洲午夜无码久久久久小说| 日本欧美一区二区三区在线播放|