Django入門第八章、模板引擎設置

      網友投稿 901 2025-04-05

      第八章目錄


      第八章、模板引擎設置

      回顧

      顯示文章標題

      創建home.html文件

      創建home視圖:

      更新urls:

      Final成果

      第八章、模板引擎設置

      回顧

      要顯示文章標題,就要把標題從數據庫中先讀取出來。我們在創建BlogArticles模型時,有一個專門的title字段存儲文章標題,那么怎么讀取到它呢?通過前面學習筆記,

      一種是通過SQL語句進行查詢 – select語句

      另一種就是通過django自帶的API進行讀取,這個功能強大的API還可以創建、獲取、修改和刪除對象

      顯示文章標題

      在manage.py所在的目錄創建一個名為 templates的新文件夾:

      myblog/ | |-- blog | |-- myblog/ | |-- templates/ <-- 這里 | +-- venv/ | +-- db.sqlite3 | +-- manage.py

      1

      2

      3

      4

      5

      6

      7

      8

      建立的目錄如下圖:

      創建home.html文件

      然后在templates文件夾中,創建一個名為home.html的HTML文件:

      templates/home.html

      我的博客

      我的博客

      {% for blog in blogs %}
    1. {{ blog.title }}

    2. {% endfor %}

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      在home中,我們使用了原始HTML和一些特殊標簽 {% for ... in ... %} 和 {{ variable }} 。它們是django模板語言的一部分。

      Django模板語言都需要用到{}花括號,塊標簽{%block name %},用來包裹塊內容,表示其間的內容可以自定義,name是塊的名稱。塊結束標簽{% endf-block%}。

      上面的例子展示了如何使用 for遍歷列表對象,這一點類似Python的循環語句,{% for blog in blogs %}是循環的開始,{% endfor %}是本循環結束。

      {{ blog.title }}雙層花括號的方式表示此處顯示變量引用的數據。blog是從blogs的QuerySet序列中得到的一個實例對象,blog.title是某個實例的title字段,我們通過這種方式獲得一片博客的標題,最后生成動態HTML文檔。

      在使用這個HTML頁面之前,我們必須告訴Django在哪里可以找到我們應用程序的模板(注:如果是利用Pycharm創建的Django項目,則會自動生成templates)。

      打開myproject目錄下面的settings.py文件,搜索TEMPLATES變量,并設置DIRS 的值為 os.path.join(BASE_DIR, 'templates'):

      TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      創建home視圖:

      在我們完成對home模板創建完成后,接下來開始寫home()函數:

      blog/views.py

      from django.shortcuts import render from .models import BlogArticles # Create your views here. def home(request): blogs = BlogArticles.objects.all() return render(request, "home.html", {"blogs":blogs})

      1

      2

      3

      4

      5

      Django入門:第八章、模板引擎設置

      6

      7

      8

      還記得當初第三章中寫HelloWorld頁面時編寫的welcome()函數嗎?同樣,home()是在視圖文件views.py中編寫的一個函數,這種方式被稱為“基于函數的視圖”,這個函數就叫“視圖函數”,后面還將學到“基于類的視圖”。

      為了響應用戶請求,然后我們利用前面交互模式中使用的語句blogs = BlogArticles.objects.all(),得到所有的BlogArticles類實例。

      然后再以return結束當前函數,并返回結果。

      render()的作用是將數據渲染到指定模板,第一個參數必須是request,然后是模板位置和所傳送的數據,數據是用類字典的形式傳送給模板的。

      home.html就是展示標題列表的前端頁面–被稱為“模板”。在每一個應用中都可以有一個專門的模板目錄,這個目錄的名稱必須是templates。

      {"blogs":blogs}向模板文件home.html中傳入blogs變量所引用的QuerySet對象,其包含所有BlogArticles類的實例對象,即從數據庫中讀取所有記錄,并在模板文件中以變量blogs({"blogs":blogs})中的鍵blogs來代表。

      更新urls:

      函數和模板都寫好了之后,我們還需要做一項工作,就是進行URL配置,相信大家在學完第三章后應該知道在哪個文件中進行URL配置了吧,對就是myblog/urls.py文件中。增加如下新增代碼:

      myblog/urls.py

      from django.contrib import admin from django.urls import path from django.conf.urls import url # 新增 from blog import views # 新增 urlpatterns = [ path('admin/', admin.site.urls), url(r'^$', views.home, name='home'), # 新增 ]

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      Final成果

      最后在瀏覽器中打開 http://127.0.0.1:8000/,結果如下圖,能一個簡單的HTML頁面展示:

      可以看到,自己創建的博客文章標題已經顯示在瀏覽器中,相信到這一步你已經激動不已(筆者也是)。細心的讀者可以會問了,只是展示了標題,可是并不能通過點擊博客文章標題查看博客內容,對,下一章的任務就是帶領大家完成查看博客文章。

      注:Django入門筆記匯總博客

      Django HTML

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格如何畫圖圖文教程(怎么用wps畫圖表)
      下一篇:將Excel數據表格以圖片的形式進行復制從而將其轉換為圖片(將圖片內容轉化為excel文檔)
      相關文章
      亚洲AV无码不卡无码| 亚洲午夜福利在线观看| 国精无码欧精品亚洲一区| 亚洲高清无码综合性爱视频| 色天使色婷婷在线影院亚洲| 亚洲精品成a人在线观看☆| 国产亚洲精品bv在线观看| 色偷偷女男人的天堂亚洲网| 国产精品亚洲片在线va| 亚洲不卡影院午夜在线观看| 亚洲私人无码综合久久网| 亚洲午夜精品久久久久久app | 亚洲最大的成人网| 亚洲精品久久久久无码AV片软件| 亚洲国产精华液2020| 国产天堂亚洲国产碰碰| 亚洲国产精品激情在线观看| 国产精品亚洲二区在线观看 | 中文字幕亚洲综合小综合在线| 亚洲AV无码无限在线观看不卡| 亚洲日韩国产一区二区三区在线| 亚洲av无码一区二区三区天堂| 亚洲成A人片在线观看无码3D | 亚洲一区二区三区久久| 亚洲中文字幕无码中文字| 亚洲AV成人无码网站| 日韩亚洲人成在线综合| 国产精品亚洲产品一区二区三区| 亚洲精品你懂的在线观看| 亚洲人成电影亚洲人成9999网| 亚洲人成综合在线播放| 亚洲精品美女久久7777777| 丁香亚洲综合五月天婷婷| 中文字幕亚洲乱码熟女一区二区 | 人人狠狠综合久久亚洲88| 亚洲综合小说久久另类区| 久久亚洲国产成人影院| 色五月五月丁香亚洲综合网| 奇米影视亚洲春色| 亚洲一区二区三区电影| 国产精品亚洲精品观看不卡|