日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python项目实践_Python 项目实践三(Web应用程序)第二篇

發(fā)布時間:2025/4/16 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python项目实践_Python 项目实践三(Web应用程序)第二篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

接著上節(jié)的繼續(xù)學習,使用Django創(chuàng)建網(wǎng)頁的過程通常分三個階段:定義URL、編寫視圖和編寫模板。首先,你必須定義URL模式,每個URL都被映射到特定的視圖——視圖函數(shù)獲取并處理網(wǎng)頁所需的數(shù)據(jù)。視圖函數(shù)通常調(diào)用一個模板,后者生成瀏覽器能夠理解的網(wǎng)頁。為明白其中的工作原理,我們來創(chuàng)建學習筆記的主頁。我們將定義該主頁的URL、編寫其視圖函數(shù)并創(chuàng)建一個簡單的模板。

一 創(chuàng)建網(wǎng)頁:學習筆記主頁

1 映射URL

用戶通過在瀏覽器中輸入URL以及單擊鏈接來請求網(wǎng)頁,因此我們需要確定項目需要哪些URL 。主頁的URL 最重要, 它是用戶用來訪問項目的基礎(chǔ)URL 。當前, 基礎(chǔ)URL(http://localhost:8000/)返回默認的Django網(wǎng)站,讓我們知道正確地建立了項目。我們將修改這一點,將這個基礎(chǔ)URL映射到“學習筆記”的主頁。打開項目主文件夾learning_log中的文件urls.py,你將看到如下代碼:

from django.conf.urls import include,url

from django.contrib import admin

from django.urls import path

urlpatterns = [

path(‘a(chǎn)dmin/‘, admin.site.urls),

url(r‘‘, include(‘learning_logs.urls‘, namespace=‘learning_logs‘)),

]

默認的urls.py包含在文件夾learning_log中,現(xiàn)在我們需要在文件夾learning_logs中創(chuàng)建另一個urls.py文件:

#定義learning_logs的URL模式

from django.conf.urls import url

form . import views

urlpatterns=[

#主頁

url(r‘^$‘,views.index,name=‘index‘)

]

實際的URL模式是一個對函數(shù)url()的調(diào)用,這個函數(shù)接受三個實參。第一個是一個正則表達式。Django在urlpatterns中查找與請求的URL字符串匹配的正則表達式,因此正則表達式定義了Django可查找的模式。

url()的第二個實參指定了要調(diào)用的視圖函數(shù)。請求的URL與前述正則表達式匹配時,Django將調(diào)用views.index(這個視圖函數(shù)將在下一節(jié)編寫)。第三個實參將這個URL模式的名稱指定為index,讓我們能夠在代碼的其他地方引用它。每當需要提供到這個主頁的鏈接時,我們都將使用這個名稱,而不編寫URL。

2 編寫視圖

視圖函數(shù)接受請求中的信息,準備好生成網(wǎng)頁所需的數(shù)據(jù),再將這些數(shù)據(jù)發(fā)送給瀏覽器——這通常是使用定義了網(wǎng)頁是什么樣的模板實現(xiàn)的。

learning_logs中的文件views.py是你執(zhí)行命令python manage.py startapp時自動生成的,當前其內(nèi)容如下:

from django.shortcuts import render

當前,這個文件只導入了函數(shù)render(),它根據(jù)視圖提供的數(shù)據(jù)渲染響應。下面的代碼演示了該如何為主頁編寫視圖:

from django.shortcuts import render

# Create your views here.

def index(request):

‘‘‘學習筆記的主頁‘‘‘

return render(request,‘learning_logs/index.html‘)

3 編寫模板

模板定義了網(wǎng)頁的結(jié)構(gòu)。模板指定了網(wǎng)頁是什么樣的,而每當網(wǎng)頁被請求時,Django將填入相關(guān)的數(shù)據(jù)。模板讓你能夠訪問視圖提供的任何數(shù)據(jù)。我們的主頁視圖沒有提供任何數(shù)據(jù),因此相應的模板非常簡單。

Learning Log

Learning Log helps you keep track of your learning, for any topic you‘re

learning about.

如果你請求這個項目的基礎(chǔ)URL——http://localhost:8000/,將看到剛才創(chuàng)建的網(wǎng)頁,而不是默認的Django網(wǎng)頁。Django接受請求的URL,發(fā)現(xiàn)該URL與模式r‘^$‘匹配,因此調(diào)用函數(shù)views.index(),這將使用index.html包含的模板來渲染網(wǎng)頁,結(jié)果如圖:

提示:上面有一個問題,就是報一個錯誤:

path(r‘‘, include(‘learning_logs.urls‘, namespace=‘learning_logs‘) ),

File "D:\study\python\code\learning_log\11_env\lib\site-packages\django\urls\conf.py", line 39, in include

‘Specifying a namespace in include() without providing an app_name ‘

django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.

一定要在D:\study\python\code\learning_log\learning_log下面的urls.py改成如下:

from django.conf.urls import include,url

from django.contrib import admin

from django.urls import path

urlpatterns = [

path(‘a(chǎn)dmin/‘, admin.site.urls),

path(r‘‘,include(‘learning_logs.urls‘, namespace=‘learning_logs‘)),

]

并在D:\study\python\code\learning_log\learning_logs下面的urls.py加上:app_name=‘learning_logs‘如下:

#定義learning_logs的URL模式

from django.conf.urls import url

from . import views

app_name=‘learning_logs‘

urlpatterns=[

#主頁

url(r‘^$‘,views.index,name=‘index‘)

]

二 創(chuàng)建其他網(wǎng)頁

制定創(chuàng)建網(wǎng)頁的流程后,可以開始擴充“學習筆記”項目了。我們將創(chuàng)建兩個顯示數(shù)據(jù)的網(wǎng)頁,其中一個列出所有的主題,另一個顯示特定主題的所有條目。對于每個網(wǎng)頁,我們都將指定URL模式,編寫一個視圖函數(shù),并編寫一個模板。但這樣做之前,我們先創(chuàng)建一個父模板,項目中的其他模板都將繼承它。

1 模板繼承

父模板:

我們首先來創(chuàng)建一個名為base.html的模板,并將其存儲在index.html所在的目錄中。這個文件包含所有頁面都有的元素;其他的模板都繼承base.html。當前,所有頁面都包含的元素只有頂端的標題。我們將在每個頁面中包含這個模板,因此我們將這個標題設(shè)置為到主頁的鏈接:

Learning Log

{% block content %}{% endblock content %}

2 子模板

現(xiàn)在需要重新編寫index.html,使其繼承base.html,如下所示:

{% extends "learning_logs/base.html" %}

{% block content %}

Learning Log helps you keep track of your learning, for any topic you‘re

learning about.

{% endblock content %}

今天有事就先寫到這里吧,明天繼續(xù)學習!

總結(jié)

以上是生活随笔為你收集整理的python项目实践_Python 项目实践三(Web应用程序)第二篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。