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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

编写你的第一个 Django 应用,第 1 部分

發(fā)布時(shí)間:2024/5/7 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编写你的第一个 Django 应用,第 1 部分 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Hello,我是 Alex 007,一個(gè)熱愛(ài)計(jì)算機(jī)編程和硬件設(shè)計(jì)的小白,為啥是007呢?因?yàn)榻?Alex 的人太多了,再加上每天007的生活,Alex 007就誕生了。

編寫(xiě)你的第一個(gè) Django 應(yīng)用,第 1 部分

安裝完Django之后相信你已經(jīng)迫不及待的想開(kāi)始寫(xiě)代碼了,接下來(lái)我們將通過(guò)一個(gè)示例學(xué)習(xí),創(chuàng)建一個(gè)基本的投票應(yīng)用程序。也許接下來(lái)我的操作你還不能完全理解明白,沒(méi)關(guān)系,先通過(guò)這個(gè)例子熟悉一下Django項(xiàng)目的開(kāi)發(fā)流程,具體的組件我們會(huì)在后續(xù)一一講解。

我們來(lái)創(chuàng)建一個(gè)基本的投票應(yīng)用程序。

它將由兩部分組成:

  • 一個(gè)讓人們查看和投票的公共站點(diǎn)。
  • 一個(gè)讓你能添加、修改和刪除投票的管理站點(diǎn)。

創(chuàng)建項(xiàng)目

如果這是你第一次使用 Django 的話,你需要一些初始化設(shè)置。也就是說(shuō),你需要用一些自動(dòng)生成的代碼配置一個(gè) Django project —— 即一個(gè) Django 項(xiàng)目實(shí)例需要的設(shè)置項(xiàng)集合,包括數(shù)據(jù)庫(kù)配置、Django 配置和應(yīng)用程序配置。

讓我們看看 startproject 創(chuàng)建了些什么:

mysite/manage.pymysite/__init__.pysettings.pyurls.pyasgi.pywsgi.py

這些目錄和文件的用處是:

  • 最外層的 mysite/ 根目錄只是你項(xiàng)目的容器, 根目錄名稱對(duì)Django沒(méi)有影響,你可以將它重命名為任何你喜歡的名稱。
  • manage.py: 一個(gè)讓你用各種方式管理 Django 項(xiàng)目的命令行工具。你可以閱讀 django-admin and manage.py 獲取所有 manage.py 的細(xì)節(jié)。
  • 里面一層的 mysite/ 目錄包含你的項(xiàng)目,它是一個(gè)純 Python 包。它的名字就是當(dāng)你引用它內(nèi)部任何東西時(shí)需要用到的 Python 包名。 (比如 mysite.urls).
  • mysite/__init__.py:一個(gè)空文件,告訴 Python 這個(gè)目錄應(yīng)該被認(rèn)為是一個(gè) Python 包。如果你是 Python 初學(xué)者,閱讀官方文檔中的 更多關(guān)于包的知識(shí)。
  • mysite/settings.py:Django 項(xiàng)目的配置文件。如果你想知道這個(gè)文件是如何工作的,請(qǐng)查看 Django 配置 了解細(xì)節(jié)。
  • mysite/urls.py:Django 項(xiàng)目的 URL 聲明,就像你網(wǎng)站的“目錄”。閱讀 URL調(diào)度器 文檔來(lái)獲取更多關(guān)于 URL 的內(nèi)容。
  • mysite/asgi.py:作為你的項(xiàng)目的運(yùn)行在 ASGI 兼容的Web服務(wù)器上的入口。閱讀 如何使用 WSGI 進(jìn)行部署 了解更多細(xì)節(jié)。
  • mysite/wsgi.py:作為你的項(xiàng)目的運(yùn)行在 WSGI 兼容的Web服務(wù)器上的入口。閱讀 如何使用 WSGI 進(jìn)行部署 了解更多細(xì)節(jié)。

用于開(kāi)發(fā)的簡(jiǎn)易服務(wù)器

讓我們來(lái)確認(rèn)一下你的 Django 項(xiàng)目是否真的創(chuàng)建成功了。如果你的當(dāng)前目錄不是外層的 mysite 目錄的話,請(qǐng)切換到此目錄,然后運(yùn)行下面的命令:

python manage.py runserver

你應(yīng)該會(huì)看到如下輸出:

Performing system checks...System check identified no issues (0 silenced).You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them.七月 10, 2020 - 15:50:53 Django version 3.0, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

注解
忽略有關(guān)未應(yīng)用最新數(shù)據(jù)庫(kù)遷移的警告,稍后我們處理數(shù)據(jù)庫(kù)。

你剛剛啟動(dòng)的是 Django 自帶的用于開(kāi)發(fā)的簡(jiǎn)易服務(wù)器,它是一個(gè)用純 Python 寫(xiě)的輕量級(jí)的 Web 服務(wù)器。將這個(gè)服務(wù)器內(nèi)置在 Django 中是為了讓你能快速的開(kāi)發(fā)出想要的東西,因?yàn)槟悴恍枰M(jìn)行配置生產(chǎn)級(jí)別的服務(wù)器(比如 Apache)方面的工作,除非你已經(jīng)準(zhǔn)備好投入生產(chǎn)環(huán)境了。

千萬(wàn)不要 將這個(gè)服務(wù)器用于和生產(chǎn)環(huán)境相關(guān)的任何地方。這個(gè)服務(wù)器只是為了開(kāi)發(fā)而設(shè)計(jì)的。

現(xiàn)在,服務(wù)器正在運(yùn)行,瀏覽器訪問(wèn) https://127.0.0.1:8000/。你將會(huì)看到一個(gè)“祝賀”頁(yè)面,隨著一只火箭發(fā)射,服務(wù)器已經(jīng)運(yùn)行了。

更換端口
默認(rèn)情況下,runserver 命令會(huì)將服務(wù)器設(shè)置為監(jiān)聽(tīng)本機(jī)內(nèi)部 IP 的 8000 端口。
如果你想更換服務(wù)器的監(jiān)聽(tīng)端口,請(qǐng)使用命令行參數(shù)。舉個(gè)例子,下面的命令會(huì)使服務(wù)器監(jiān)聽(tīng) 8080 端口:
python manage.py runserver 8080
如果你想要修改服務(wù)器監(jiān)聽(tīng)的IP,在端口之前輸入新的。比如,為了監(jiān)聽(tīng)所有服務(wù)器的公開(kāi)IP(這你運(yùn)行 Vagrant 或想要向網(wǎng)絡(luò)上的其它電腦展示你的成果時(shí)很有用),使用:
python manage.py runserver 0:8000
0 是 0.0.0.0 的簡(jiǎn)寫(xiě)。
完整的關(guān)于開(kāi)發(fā)服務(wù)器的文檔可以在 :djamdin:runserver 參考文檔中找到。

創(chuàng)建投票應(yīng)用

現(xiàn)在你的開(kāi)發(fā)環(huán)境——這個(gè)“項(xiàng)目” ——已經(jīng)配置好了,你可以開(kāi)始干活了。

在 Django 中,每一個(gè)應(yīng)用都是一個(gè) Python 包,并且遵循著相同的約定。Django 自帶一個(gè)工具,可以幫你生成應(yīng)用的基礎(chǔ)目錄結(jié)構(gòu),這樣你就能專心寫(xiě)代碼,而不是創(chuàng)建目錄了。

項(xiàng)目 VS 應(yīng)用
項(xiàng)目和應(yīng)用有什么區(qū)別?
應(yīng)用是一個(gè)專門(mén)做某件事的網(wǎng)絡(luò)應(yīng)用程序——比如博客系統(tǒng),或者公共記錄的數(shù)據(jù)庫(kù),或者小型的投票程序。
項(xiàng)目則是一個(gè)網(wǎng)站使用的配置和應(yīng)用的集合。項(xiàng)目可以包含很多個(gè)應(yīng)用。應(yīng)用可以被很多個(gè)項(xiàng)目使用。

你的應(yīng)用可以存放在任何 Python path 中定義的路徑。在這個(gè)教程中,我們將在你的 manage.py 同級(jí)目錄下創(chuàng)建投票應(yīng)用。這樣它就可以作為頂級(jí)模塊導(dǎo)入,而不是 mysite 的子模塊。

請(qǐng)確定你現(xiàn)在處于 manage.py 所在的目錄下,然后運(yùn)行這行命令來(lái)創(chuàng)建一個(gè)應(yīng)用:

python manage.py startapp polls

這將會(huì)創(chuàng)建一個(gè) polls 目錄,它的目錄結(jié)構(gòu)大致如下:

polls/__init__.pyadmin.pyapps.pymigrations/__init__.pymodels.pytests.pyviews.py

這個(gè)目錄結(jié)構(gòu)包括了投票應(yīng)用的全部?jī)?nèi)容。

編寫(xiě)第一個(gè)視圖

讓我們開(kāi)始編寫(xiě)第一個(gè)視圖吧。打開(kāi) polls/views.py,把下面這些 Python 代碼輸入進(jìn)去:

from django.http import HttpResponsedef index(request):return HttpResponse("Hello, world. You're at the polls index.")

這是 Django 中最簡(jiǎn)單的視圖。如果想看見(jiàn)效果,我們需要將一個(gè) URL 映射到它——這就是我們需要 URLconf 的原因了。

為了創(chuàng)建 URLconf,請(qǐng)?jiān)?polls 目錄里新建一個(gè) urls.py 文件。你的應(yīng)用目錄現(xiàn)在看起來(lái)應(yīng)該是這樣:

polls/__init__.pyadmin.pyapps.pymigrations/__init__.pymodels.pytests.pyurls.pyviews.py

在 polls/urls.py 中,輸入如下代碼:

from django.urls import pathfrom . import viewsurlpatterns = [path('', views.index, name='index'), ]

下一步是要在根 URLconf 文件中指定我們創(chuàng)建的 polls.urls 模塊。在 mysite/urls.py 文件的 urlpatterns 列表里插入一個(gè) include(), 如下:

from django.contrib import admin from django.urls import include, pathurlpatterns = [path('polls/', include('polls.urls')),path('admin/', admin.site.urls), ]

函數(shù) include() 允許引用其它 URLconfs。每當(dāng) Django 遇到 include() 時(shí),它會(huì)截?cái)嗯c此項(xiàng)匹配的 URL 的部分,并將剩余的字符串發(fā)送到 URLconf 以供進(jìn)一步處理。

我們?cè)O(shè)計(jì) include() 的理念是使其可以即插即用。因?yàn)橥镀睉?yīng)用有它自己的 URLconf( polls/urls.py ),他們能夠被放在 “/polls/” , “/fun_polls/” ,"/content/polls/",或者其他任何路徑下,這個(gè)應(yīng)用都能夠正常工作。

何時(shí)使用 include()
當(dāng)包括其它 URL 模式時(shí)你應(yīng)該總是使用 include() , admin.site.urls 是唯一例外。

你現(xiàn)在把 index 視圖添加進(jìn)了 URLconf。通過(guò)以下命令驗(yàn)證是否正常工作:

python manage.py runserver

用你的瀏覽器訪問(wèn) http://localhost:8000/polls/,你應(yīng)該能夠看見(jiàn) “Hello, world. You’re at the polls index.” ,這是你在 index 視圖中定義的。

沒(méi)有找到頁(yè)面?
如果你在這里得到了一個(gè)錯(cuò)誤頁(yè)面,檢查一下你是不是正訪問(wèn)著http://localhost:8000/polls/ 而不應(yīng)該是 http://localhost:8000/。

函數(shù) path() 具有四個(gè)參數(shù),兩個(gè)必須參數(shù):route 和 view,兩個(gè)可選參數(shù):kwargs 和 name。現(xiàn)在,是時(shí)候來(lái)研究這些參數(shù)的含義了。

path() 參數(shù): route?

route 是一個(gè)匹配 URL 的準(zhǔn)則(類似正則表達(dá)式)。當(dāng) Django 響應(yīng)一個(gè)請(qǐng)求時(shí),它會(huì)從 urlpatterns 的第一項(xiàng)開(kāi)始,按順序依次匹配列表中的項(xiàng),直到找到匹配的項(xiàng)。

這些準(zhǔn)則不會(huì)匹配 GET 和 POST 參數(shù)或域名。例如,URLconf 在處理請(qǐng)求 https://www.example.com/myapp/ 時(shí),它會(huì)嘗試匹配 myapp/ 。處理請(qǐng)求 https://www.example.com/myapp/?page=3 時(shí),也只會(huì)嘗試匹配 myapp/

path() 參數(shù): view?

當(dāng) Django 找到了一個(gè)匹配的準(zhǔn)則,就會(huì)調(diào)用這個(gè)特定的視圖函數(shù),并傳入一個(gè) HttpRequest 對(duì)象作為第一個(gè)參數(shù),被“捕獲”的參數(shù)以關(guān)鍵字參數(shù)的形式傳入。

path() 參數(shù): kwargs?

任意個(gè)關(guān)鍵字參數(shù)可以作為一個(gè)字典傳遞給目標(biāo)視圖函數(shù)。本教程中不會(huì)使用這一特性。

path() 參數(shù): name?

為你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。這個(gè)有用的特性允許你只改一個(gè)文件就能全局地修改某個(gè) URL 模式。

下一節(jié):編寫(xiě)你的第一個(gè) Django 應(yīng)用,第 2 部分

總結(jié)

以上是生活随笔為你收集整理的编写你的第一个 Django 应用,第 1 部分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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