国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python web實戰(zhàn)之 Django 的模板語言詳解

這篇具有很好參考價值的文章主要介紹了Python web實戰(zhàn)之 Django 的模板語言詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python web實戰(zhàn)之 Django 的模板語言詳解,python,django,開發(fā)語言


關(guān)鍵詞:

Python、web開發(fā)、Django、模板語言

?


概要

?文章來源地址http://www.zghlxwxcb.cn/news/detail-626662.html

作為 Python Web 開發(fā)的框架之一,Django 提供了一套完整的 MVC 模式,其中的模板語言為開發(fā)者提供了強大的渲染和控制前端的能力。本文介紹 Django 的模板語言。

?

1. Django 模板語言入門

Django 的模板語言是一種基于 HTML 的模板語言,它提供了豐富的標簽和過濾器來幫助開發(fā)者實現(xiàn)前端渲染和邏輯控制。在使用模板語言之前,我們需要先了解 Django 的模板文件結(jié)構(gòu)和渲染方式。

1.1 模板文件的結(jié)構(gòu)

在 Django 中,模板文件通常存放在應用的 templates 目錄下。一個模板文件通常由以下幾部分組成:

  • 模板頭部:包含模板引用其他文件、定義模板塊等信息。

  • 模板主體:包含實際的 HTML 代碼和模板標簽。

  • 模板尾部:包含 JavaScript 代碼、CSS 樣式等信息。

通常情況下,我們只需要編寫模板主體部分,而頭部和尾部可以使用已有的模板文件或者框架提供的默認模板。

1.2 模板的渲染方式

在 Django 中,模板文件可以通過視圖函數(shù)中的 render 函數(shù)進行渲染,例如:

from?django.shortcuts?import?render

def?index(request):
????context?=?{'title':?'Hello?World!'}
????return?render(request,?'index.html',?context)

在 render 函數(shù)中,第一個參數(shù)是請求對象,第二個參數(shù)是模板文件名,第三個參數(shù)是傳遞給模板的上下文變量。在模板中,我們可以通過變量名來訪問上下文變量,例如:

<h1>{{?title?}}</h1>

在模板渲染時,Django 會將模板中的變量替換為上下文變量的值,并執(zhí)行模板標簽和過濾器。

?

2. Django 模板語言進階

除了簡單的變量渲染,Django 的模板語言還提供了豐富的標簽和過濾器來實現(xiàn)邏輯控制和數(shù)據(jù)處理。下面我們將介紹一些常用的模板標簽和過濾器。

2.1 模板標簽

Django 的模板標簽可以實現(xiàn)邏輯控制和數(shù)據(jù)處理,常用的標簽包括:

  • if 標簽:用于條件判斷。

  • for 標簽:用于循環(huán)迭代。

  • include 標簽:用于引入其他模板文件。

  • block 和 extends 標簽:用于模板繼承和重載。

  • url 標簽:用于生成 URL。

例如,我們可以使用 if 標簽來判斷一個變量是否為空:

{%?if?variable?%}
????<p>{{?variable?}}</p>
{%?else?%}
????<p>Variable?is?empty.</p>
{%?endif?%}

使用 for 標簽來循環(huán)迭代一個列表:

{%?for?item?in?list?%}
????<li>{{?item?}}</li>
{%?endfor?%}

使用 include 標簽引入其他模板文件:

{%?include?'header.html'?%}

當我們需要在多個頁面中使用相同的 HTML 結(jié)構(gòu)時,可以使用 Django 的模板繼承和重載功能,減少代碼重復和維護成本。

先創(chuàng)建一個基礎(chǔ)模板文件 base.html,定義共用的 HTML 結(jié)構(gòu)和 CSS 樣式:

<!DOCTYPE?html>
<html>
<head>
????<title>{%?block?title?%}{%?endblock?%}</title>
????<link?rel="stylesheet"?href="style.css">
</head>
<body>
????<div?id="header">
????????{%?block?header?%}{%?endblock?%}
????</div>
????<div?id="content">
????????{%?block?content?%}{%?endblock?%}
????</div>
????<div?id="footer">
????????{%?block?footer?%}{%?endblock?%}
????</div>
</body>
</html>

在這個模板中,使用了 block 標簽來定義可重載的區(qū)域。例如?{% block title %}{% endblock %}?定義了一個名為 title 的區(qū)域,該區(qū)域可以在子模板中被重載。

接下來創(chuàng)建一個子模板文件 child.html,繼承 base.html 并重載其中的區(qū)域:

{%?extends?'base.html'?%}

{%?block?title?%}Child?Page{%?endblock?%}

{%?block?header?%}
????<h1>Child?Header</h1>
{%?endblock?%}

{%?block?content?%}
????<p>Child?Content</p>
{%?endblock?%}

在該模板中,我們使用 extends 標簽來繼承 base.html,并使用 block 標簽重載了 title、header 和 content 區(qū)域。在渲染該模板時,Django 會自動將子模板中重載的區(qū)域插入到父模板中對應的位置,最終生成完整的 HTML 頁面。

通過模板繼承和重載功能,我們可以更加方便地管理和維護大型 Web 應用程序中的 HTML 結(jié)構(gòu)和樣式。

2.2 模板過濾器

Django 的模板過濾器可以對變量進行處理和格式化,常用的過濾器包括:

  • date:用于格式化日期。

  • length:用于獲取列表長度。

  • upper 和 lower:用于將字符串轉(zhuǎn)換為大寫和小寫。

  • join:用于將列表轉(zhuǎn)換為字符串。

  • default:用于設置默認值。

例如,可以使用 date 過濾器來格式化日期:

<p>{{?date|date:"Y-m-d"?}}</p>

使用 length 過濾器獲取列表長度:

<p>{{?list|length?}}</p>

使用 upper 和 lower 過濾器將字符串轉(zhuǎn)換為大寫和小寫:

<p>{{?string|upper?}}</p>
<p>{{?string|lower?}}</p>

將日期格式化為指定的字符串。

??<p>{{?post.pub_date|date:"F?j,?Y"?}}</p>

截取列表的一部分元素。

??<ul>
??{%?for?item?in?items|slice:":3"?%}
??????<li>{{?item?}}</li>
??{%?endfor?%}
??</ul>

將文本中的URL自動轉(zhuǎn)化為鏈接。

??<p>{{?post.content|urlize?}}</p>

?

3. Django 模板語言實戰(zhàn)

在實際的 Web 開發(fā)中,我們經(jīng)常需要使用 Django 的模板語言來實現(xiàn)一些常用的功能。下面介紹幾個實用的實戰(zhàn)案例。

3.1 分頁功能

在列表頁面中,通常需要實現(xiàn)分頁功能。Django 提供了內(nèi)置的分頁模塊,可以幫助我們快速實現(xiàn)分頁功能。首先,需要在視圖函數(shù)中引入分頁模塊:

from?django.core.paginator?import?Paginator

def?list(request):
????items?=?Item.objects.all()
????paginator?=?Paginator(items,?10)
????page?=?request.GET.get('page')
????items?=?paginator.get_page(page)
????return?render(request,?'list.html',?{'items':?items})

在模板中,可以使用分頁模塊提供的標簽和過濾器來實現(xiàn)分頁功能:

{%?for?item?in?items?%}
????<p>{{?item.name?}}</p>
{%?endfor?%}

{%?if?items.has_previous?%}
????<a?href="?page={{?items.previous_page_number?}}">上一頁</a>
{%?endif?%}

{%?for?i?in?items.paginator.page_range?%}
????{%?if?items.number?==?i?%}
????????<strong>{{?i?}}</strong>
????{%?else?%}
????????<a?href="?page={{?i?}}">{{?i?}}</a>
????{%?endif?%}
{%?endfor?%}

{%?if?items.has_next?%}
????<a?href="?page={{?items.next_page_number?}}">下一頁</a>
{%?endif?%}

3.2 表單驗證功能

在表單頁面通常需要驗證用戶輸入的數(shù)據(jù)是否合法。Django 提供了內(nèi)置的表單驗證模塊,可以幫助我們快速實現(xiàn)表單驗證功能。首先需要定義一個表單類:

from?django?import?forms

class?ContactForm(forms.Form):
????name?=?forms.CharField(max_length=50)
????email?=?forms.EmailField()
????message?=?forms.CharField(widget=forms.Textarea)

這里定義了一個名為 ContactForm 的表單類,其中包含三個字段:name、email 和 message。name 字段使用了 CharField 類來驗證用戶輸入的姓名,限制最大長度為 50 個字符;email 字段使用了 EmailField 類來驗證用戶輸入的電子郵件地址,確保其符合電子郵件地址的格式;message 字段使用了 CharField 類,并使用了 Textarea 組件來允許用戶輸入多行文本信息。

在視圖函數(shù)中,我們可以使用表單驗證模塊來驗證用戶輸入的數(shù)據(jù):

from?django.shortcuts?import?render
from?.forms?import?ContactForm

def?contact(request):
????if?request.method?==?'POST':
????????form?=?ContactForm(request.POST)
????????if?form.is_valid():
????????????#?處理用戶輸入的數(shù)據(jù)
????????????return?HttpResponseRedirect('/thanks/')
????else:
????????form?=?ContactForm()
????return?render(request,?'contact.html',?{'form':?form})

在模板中,我們可以使用表單模塊提供的標簽和過濾器來快速渲染表單:

<form?method="post">
????{%?csrf_token?%}
????{{?form.as_p?}}
????<button?type="submit">提交</button>
</form>

?

技術(shù)總結(jié)

本文章介紹了 Django 的模板語言,包括模板文件的結(jié)構(gòu)、模板的渲染方式、常用的模板標簽和過濾器,以及實用的實戰(zhàn)案例。

?

如果文章對你有所幫助,歡迎點贊收藏轉(zhuǎn)發(fā),感謝??

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

到了這里,關(guān)于Python web實戰(zhàn)之 Django 的模板語言詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Python web實戰(zhàn)之Django的AJAX支持詳解

    Python web實戰(zhàn)之Django的AJAX支持詳解

    ? :Web開發(fā)、Django、AJAX、前端交互、動態(tài)網(wǎng)頁 今天和大家分享Django的AJAX支持。AJAX可實現(xiàn)在網(wǎng)頁上動態(tài)加載內(nèi)容、無刷新更新數(shù)據(jù)的需求。 AJAX(Asynchronous JavaScript and XML)是一種在網(wǎng)頁上實現(xiàn)異步通信的技術(shù)。通過AJAX,我們可以在不刷新整個網(wǎng)頁的情況下,與服務器

    2024年02月13日
    瀏覽(98)
  • Python web實戰(zhàn)之Django性能優(yōu)化最佳實踐詳解

    大家好!今天分享如何優(yōu)化使用Django應用的性能,使其在高并發(fā)、大數(shù)據(jù)量的情況下能夠保持良好的性能。 數(shù)據(jù)庫查詢是Web應用中常見的性能瓶頸之一。 1.1 使用select_related和prefetch_related 在Django中,可以使用 select_related 和 prefetch_related 方法來優(yōu)化數(shù)據(jù)庫查詢。這兩個方法可

    2024年02月11日
    瀏覽(88)
  • Python web實戰(zhàn)之Django的文件上傳和處理詳解

    Python web實戰(zhàn)之Django的文件上傳和處理詳解

    ? :Python Web開發(fā)、Django、文件上傳、文件處理 今天分享一下Django的文件上傳和處理。 在開始深入講解Django的文件上傳和處理之前,先了解一下文件上傳的基本原理。當用戶選擇要上傳的文件后,該文件會被發(fā)送到服務器端,并存儲在服務器的某個位置上。我們需要在

    2024年02月13日
    瀏覽(88)
  • Python web實戰(zhàn)之 Django 的 MVC 設計模式詳解

    Python web實戰(zhàn)之 Django 的 MVC 設計模式詳解

    ? 技術(shù)棧:Python、Django、HTML、CSS、JavaScript。 在 Web 開發(fā)中,MVC(Model-View-Controller)模式是一種非常常見的設計模式,它可以幫助我們更好地管理代碼,提高代碼的可維護性。今天就介紹如何使用 Django 框架實現(xiàn) MVC 模式。 MVC 模式是一種軟件設計模式,它將應用程序分為三個

    2024年02月14日
    瀏覽(572)
  • Python web實戰(zhàn)之Django 的 RESTful API 設計詳解

    Python web實戰(zhàn)之Django 的 RESTful API 設計詳解

    ? : Python, Web 開發(fā), Django, RESTful API 1.1 什么是API? API是應用程序編程接口(Application Programming Interface)的縮寫。它是一種定義了不同軟件組件之間交互方式的規(guī)范。API允許不同的應用程序之間進行通信和數(shù)據(jù)交換,使得開發(fā)者能夠利用其他應用程序提供的功能和數(shù)據(jù),

    2024年02月14日
    瀏覽(95)
  • Python web實戰(zhàn)之Django的國際化和本地化詳解

    Python web實戰(zhàn)之Django的國際化和本地化詳解

    :Django、Python、Web開發(fā)、國際化(i18n)、本地化(l10n) 今天我要和大家分享一下 Python Web 開發(fā)中的一個重要話題——Django 的國際化和本地化。 你有沒有想過如何讓你的網(wǎng)站在全球范圍內(nèi)都能被用戶順利使用呢?或許你的網(wǎng)站需要支持不同語言的界面,或者根據(jù)用戶

    2024年02月12日
    瀏覽(90)
  • Python Django 之模板繼承詳解(extends)

    Python Django 之模板繼承詳解(extends)

    模板繼承 和 類繼承 的目的是一樣的,都是為了提高代碼的復用 登錄效果:

    2024年02月06日
    瀏覽(26)
  • Python Django Web開發(fā)實戰(zhàn)

    Django是一個非常強大的Python Web開發(fā)框架,它以\\\"快速開發(fā)\\\"和\\\"干凈、實用的設計\\\"為設計宗旨。本文將從Django的基本概念開始,逐漸引導大家理解如何使用Django構(gòu)建復雜的web應用程序。 首先,讓我們從Django的核心組件開始講解。Django遵循MVC模型-視圖-控制器設計模式,并在Pyth

    2024年02月11日
    瀏覽(86)
  • Python web實戰(zhàn)之細說Django的集成測試

    今天給大家分享一下Python Web開發(fā)——Django的集成測試,如何利用集成測試來提高代碼質(zhì)量、減少bug。 在開始介紹Django的集成測試之前,我們先來了解一下什么是集成測試。 集成測試 是軟件開發(fā)中的一種測試方法,旨在驗證不同組件或模塊之間的交互是否正常。 對于Web開發(fā)

    2024年02月12日
    瀏覽(19)
  • Python web實戰(zhàn)之細說 Django 的單元測試

    Python web實戰(zhàn)之細說 Django 的單元測試

    ? : Python Web 開發(fā)、Django、單元測試、測試驅(qū)動開發(fā)、TDD、測試框架、持續(xù)集成、自動化測試 大家好,今天,我將帶領(lǐng)大家進入 Python Web 開發(fā)的新世界,深入探討 Django 的單元測試。通過本文的實戰(zhàn)案例和詳細講解,你將學會如何使用單元測試來保證代碼質(zhì)量,提高開

    2024年02月12日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包