Python之Django總結

一.Djangohtml

總結django知識點web

 

1、視圖函數:sql

    請求對象-----------request:django

          一、HttpRequest.body:         請求原數據函數

          二、HttpRequest.path:            一個字符串,表示請求的路徑組件(不含域名) post

          三、HttpRequest.method  url

          四、HttpRequest.GETspa

          五、HttpRequest.POSTcode

          六、HttpRequest.FILEShtm

          七、HttpResquest.user:        一個AUTH_USER_MODEL 類型的對象

   響應對象:

         return   HttpResponse("")       返回字符串實例

         return   render(request,"template",{"":""})     返回字符串實例

         return   rredirect("/index/")      重定向

2、  模板語言

       首先在views視圖函數裏寫函數,返回一個渲染頁面:

      views:

              def foo (request): 

                   name="li"

                   l=[111,2222,3333]

                  d={"info":[obj1,obj2...]}

                  return  render(request,"index.html",locals())

     一、變量:{{name}}

              -------深度查詢  句點符.     如:{{d.info.0.name}}

              -------過濾器{{name|date:"Y-m-d"}}

    2.標籤:

      for循環

          {%for i in l%}

             {{i}}

          {%empty%}

           <p>沒有符合的條件</p>

          {%endfor%}       

     if判斷語句

          {%if name="li"%}

             <p> Yes</p>

          {%elif%}

          {%endif....%}

   三、模板語法

         (1)在母版中base.html:  {%block con%}{%endblock%}

         (2)繼承母版 index.html:

                                                {%extends "base.html"%}         繼承

                                                {%block con%}

                                                {%endblock%}

3、ORM之models模型

    一、 映射關係:

               sql中表名-----------Python的類名

               sql中的字段---------Python的類屬性

               sql中的記錄---------Python的類對象

 連表操做(基於對象查詢):

一對多的查詢:
                            
                                實例1:查詢主鍵爲4的文章的分類名稱(正向查詢,按字段)
                                       
                                       article_obj=models.Article.objects.get(nid=4)
                                       print(article_obj.category.title)
                                
                                       SELECT * FROM "blog_article" WHERE "blog_article"."nid" = 4;  // category_id=2
                                       SELECT * FROM "blog_category" WHERE "blog_category"."nid" = 2; 

                                實例2:查詢用戶yuan發表過的全部的文章(反向查詢,表名_set)
                                       yuan=models.UserInfo.objects.get(username="yuan")
                                       book_list=yuan.article_set.all()  # QuerySet 
                                       
                                   
                             
                            多對多的查詢:
                                
                                 實例3:查詢主鍵爲4的文章的標籤名稱(正向查詢,按字段)     
                                     article_obj=models.Article.objects.get(nid=4)                                
                                     tag_list=article_obj.tags.all()   #  是經過Article2Tag找到tag表中關聯的tag記錄
                                     for i in tag_list:
                                          print(i.title)
                                      
                                 實例4:查詢web開發的這個標籤對應的全部的文章(反向查詢,按表名_set)
                                    tag_obj=models.Tag.objects.get(title="web開發")
                                    article_list=tag_obj.article_set.all()
                                    for i in article_list:
                                        print(i.title)                            
                                        
                                 實例5:查詢web開發的這個標籤對應的全部的文章對應的做者名字
                                      tag_obj=models.Tag.objects.get(title="web開發")
                                      article_list=tag_obj.article_set.all()    
                                      for article in article_list:
                                           print(article.user.username)
基於QuerySet跨表查詢 ( 正向查詢,按字段 ;反向查詢,按表名)


一對多的查詢:

 實例1:查詢主鍵爲4的文章的分類名稱

models.Article.objects.filter(nid=4).values("category__title") 
 models.Category.objects.filter(article__nid=4).values("title")

實例2:查詢用戶yuan發表過的全部的文章
models.UserInfo.objects.filter(username="yuan").values(article__title)
 models.Article.objects.filter(user__username="yuan").values("title")


多對多的查詢:

 實例3:查詢主鍵爲4的文章的標籤名稱(正向查詢,按字段) 
models.Article.objects.filter(nid=4).values("tags__title")
 models.Tag.objects.filter(article__nid=4).values("title") 

實例4:查詢web開發的這個標籤對應的全部的文章(反向查詢,按表名_set)
models.Article.objects.filter(tags__title="web開發").values("title")
 models.Tag.objects.filter(title="web開發").values("article__title") 

實例5:查詢web開發的這個標籤對應的全部的文章對應的做者名字
models.Tag.objects.filter(title="web開發").values("article__user__username")
 models.UserInfo.objects.filter(article__tags__title="web開發").values("username")
相關文章
相關標籤/搜索