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")