【Django博客开发教程】:数据查询 Article.objects.all()
進行數據查詢之前,我們需要先進入我們的管理后臺,在里面添加一些數據。然后我們用Pycharm打開我們的數據庫。具體操作方法:用Pycharm可視化操作數據庫
我們的數據結構長這般模樣:
雙擊blog_article,可以查看到文章表里的內容和里面的字段:
數據查詢,就是在視圖函數里(views.py文件里)對模型Product進行實例化,并生成對象。生成的對象就是我們要查詢的數據。然后我們可以對這個對象的屬性進行逐一賦值,對象的屬性來自于Product模型中所定義的字段。直白一點的說法就是,我們在視圖層里對某一個數據庫表進行查詢,然后得到一個對象,我們可以通過這個對象能獲取到這個表里的所有字段的值。具體操作如下:
1、從models.py里導入模型Product(也就是類名,或者說表名):
blog/views.py #比如我信要查詢所有文章,我們就要views.py文件頭部把文章表從數據模型導入 from .models import Article2、在視圖函數里對要查詢的Product進行聲明并實例化,然后生成對象allarticle。
blog/views.pydef index(request):#對Article進行聲明并實例化,然后生成對象allarticleallarticle = Article.objects.all()#把查詢到的對象,封裝到上下文context = {'allarticle': allarticle,}#把上傳文傳到模板頁面index.html里return render(request,'index.html',context)注:這里我在原來的基礎上,把index視圖函數里的內容刪除了,修改成上面的內容,下面的模板頁面index.html也是如此。
3、打開templates/index.html頁面,修改成下面的內容:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>MyBlog</title> </head> <body><div><ul><h4>所有文章:</h4>{% for article in allarticle %}<li>{{ article.title }}</li>{% endfor %}</ul> </div></div> </body> </html>然后訪問網站首頁。就能看到我們的查詢結果。
在模板里,我們可以對對象的屬性進行賦值。比如模板里的{{ article.title }} 標題,就是我們通過**{{ 對象.屬性(字段) }}**獲取到對應的值。其它字段也是通過這樣的方法來實現。
例如:
templates/index.html<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>MyBlog</title> </head> <body><div><ul><h4>所有文章:</h4>{% for article in allarticle %}<li>標題:{{ article.title }}<br />欄目:{{ article.category }}<br />作者:{{ article.user }}<br />時間:{{ article.created_time }}<br /></li>{% endfor %}</ul> </div></div> </body> </html>從之前的文章我們可以看到,如果我們想要將數據庫的數據展現到網頁上,需要由視圖、模型與模板共同實現,步驟如下:
1、在models.py里定義數據模型,以類的方式定義數據表的字段。在數據庫創建數據表時,數據表由模型定義的類生成。
2、在視圖views.py導入模型所定義的類,我們把這個類稱之為數據表對象,然后在視圖函數里使用Django的數據庫操作方法,實現數據庫操作,從而獲取到數據表里的數據。
3、視圖函數獲取到數據之后,將數據以字典、列表或對象(上下文context)的方式傳遞給HTML模板,并由模板引擎接收和解析,最后生成相應的HTML網頁,在瀏覽器里展現出來。
更多關于數據庫查詢操作方面的文章,請查看:ORM之QuerySet API 和 ORM QuerySet查詢
參考鏈接:https://www.django.cn/course/show-43.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【Django博客开发教程】:数据查询 Article.objects.all()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python Django2.0入门教
- 下一篇: linux fedora自定义终端ter