日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

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

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

1 映射URL

用戶通過在瀏覽器中輸入U(xiǎn)RL以及單擊鏈接來請(qǐng)求網(wǎng)頁,因此我們需要確定項(xiàng)目需要哪些URL 。主頁的URL 最重要, 它是用戶用來訪問項(xiàng)目的基礎(chǔ)URL 。當(dāng)前, 基礎(chǔ)URL(http://localhost:8000/)返回默認(rèn)的Django網(wǎng)站,讓我們知道正確地建立了項(xiàng)目。我們將修改這一點(diǎn),將這個(gè)基礎(chǔ)URL映射到“學(xué)習(xí)筆記”的主頁。打開項(xiàng)目主文件夾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‘)),

]

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

#定義learning_logs的URL模式

from django.conf.urls import url

form . import views

urlpatterns=[

#主頁

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

]

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

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

2 編寫視圖

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

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

from django.shortcuts import render

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

from django.shortcuts import render

# Create your views here.

def index(request):

‘‘‘學(xué)習(xí)筆記的主頁‘‘‘

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

3 編寫模板

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

Learning Log

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

learning about.

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

提示:上面有一個(gè)問題,就是報(bào)一個(gè)錯(cuò)誤:

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

1 模板繼承

父模板:

我們首先來創(chuàng)建一個(gè)名為base.html的模板,并將其存儲(chǔ)在index.html所在的目錄中。這個(gè)文件包含所有頁面都有的元素;其他的模板都繼承base.html。當(dāng)前,所有頁面都包含的元素只有頂端的標(biāo)題。我們將在每個(gè)頁面中包含這個(gè)模板,因此我們將這個(gè)標(biāo)題設(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ù)學(xué)習(xí)!

總結(jié)

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

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