<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個完整的Django入門指南

          共 4334字,需瀏覽 9分鐘

           ·

          2021-01-21 09:06

          譯者:vimiix
          原文地址:https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html

          今日推文速看

          三條:簡單3步,Pycharm 中運行 Django!
          四條:Django提速手冊:為Django應(yīng)用提速!
          五條:“工資3000,一年存了20萬”:掌握理財技能,讓我少奮斗10年!?.

          ↑?關(guān)注 + 星標?,每天學(xué)Python新技能

          后臺回復(fù)【大禮包】送你Python自學(xué)大禮包



          前言


          今天我將開始一個關(guān)于 Django 基礎(chǔ)知識的全新系列教程,這是一個開始學(xué)習(xí) Django 的完整入門指南,教程材料一共會被分為七個部分。

          我們將從安裝、開發(fā)環(huán)境的準備,模型,視圖,模板,URL到更高級的主題(如遷移,測試和部署)中詳細探討所有基本概念。

          我想做一些不一樣的事情,這是一個容易學(xué)習(xí),內(nèi)容豐富且不失趣味的教程。我的想法是在文章中穿插一些漫畫的方式來演示說明相應(yīng)的概念和場景。我希望大家能夠享受這種閱讀!
          但是在我們開始之前…
          當年我在一所大學(xué)擔任代課教授時,我曾經(jīng)在計算機科學(xué)專業(yè)給新來的學(xué)生講授網(wǎng)絡(luò)開發(fā)學(xué)科。那時我總是會用下面這個孔夫子的名言開始新的課程:


          (譯者注:不確定是孔子講的,但這句話早在中國古代就有所提到,出自荀子《儒效篇》“不聞不若聞之,聞之不若見之,見之不若知之,知之不若行之;學(xué)至于行之而止矣”)
          所以,請動起手來!不要只是閱讀教程。我們一起來練習(xí)!通過實踐和練習(xí)你會收獲的更多。

          為什么要學(xué)習(xí)Django?


          Django是一個用 Python 編寫的 Web 框架。Web 框架是一種軟件,基于web框架可以開發(fā)動態(tài)網(wǎng)站,各種應(yīng)用程序以及服務(wù)。它提供了一系列工具和功能,可以解決許多與Web開發(fā)相關(guān)的常見問題,比如:安全功能,數(shù)據(jù)庫訪問,會話,模板處理,URL路由,國際化,本地化,等等。
          使用諸如 Django 之類的網(wǎng)絡(luò)框架,使我們能夠以標準化的方式快速開發(fā)安全可靠的Web應(yīng)用程序,而無需重新發(fā)明輪子。
          那么,Django有什么特別之處呢?對于初學(xué)者來說,它是一個Python Web框架,這意味著你可以受益于各種各樣的開源庫包。python軟件包資料庫(pypi)擁有超過11.6萬個軟件包(2017年9月6日的數(shù)據(jù))。如果當你想要解決一個特定的問題的時候,可能有人已經(jīng)為它實現(xiàn)了一個庫來供你使用。
          Django是用python編寫的最流行的web框架之一。它絕對是最完整的,提供了各種各樣的開箱即用的功能,比如用于開發(fā)和測試的獨立Web服務(wù)器,緩存,中間件系統(tǒng),ORM,模板引擎,表單處理,基于Python單元測試的工具接口。
          Django還自帶內(nèi)部電池,提供內(nèi)置應(yīng)用程序,比如一個認證系統(tǒng),一個可用于 CRUD(增刪改查) 操作并且自動生成頁面的后臺管理界面,生成訂閱文檔(RSS/Atom),站點地圖等。甚至在django中內(nèi)建了一個地理信息系統(tǒng)(GIS)框架。
          Django的開發(fā)得到了Django軟件基金會的支持,并且由jetbrains和instagram等公司贊助。
          Django現(xiàn)在已經(jīng)存在了相當長的一段時間了。到現(xiàn)在為止,活躍的項目開發(fā)時間已經(jīng)超過12年,這也證明了它是一個成熟,可靠和安全的網(wǎng)絡(luò)框架。

          誰在使用Django?

          知道誰在使用Django是很好的,同時也想一想你可以用它來做些什么。在使用Django的大型網(wǎng)站有:Instagram,Disqus,Mozilla,Bitbucket,Last.fm,國家地理。
          想知道更多的示例,你可以到Django Sites數(shù)據(jù)庫中查看,它提供超過五千個Django驅(qū)動的網(wǎng)站列表。
          順便說一下,去年在Django 2016年發(fā)布會上,Django核心開發(fā)人員,Instagram員工 carl meyer,就Instagram如何大規(guī)模使用Django以及它如何支持他們的用戶增長做過一次分享。這是個一小時的演講,如果你有興趣學(xué)習(xí)了解更多的話,這是一次很有趣的演講。

          安裝


          我們需要做的第一件事是在我們的電腦上安裝一些程序,以便能夠開始使用django。基本的設(shè)置包括安裝PythonVirtualenvDjango

          使用虛擬環(huán)境不是強制性的,但是我還是強烈建議大家這樣做。如果你是一個初學(xué)者,那么最好形成一個良好的開端。
          當你在用 Django 開發(fā)一個網(wǎng)站或者一個Web項目的時候,不得不安裝外部庫以支持開發(fā)是非常常見的事情。使用虛擬環(huán)境,你開發(fā)的每個項目都會有其獨立的環(huán)境。這樣的話,包之間的依賴關(guān)系不會發(fā)生沖突。同時也使得你能在不同Django版本上運行的本地機器的項目。
          在后面你會看到使用它是非常簡單的!

          安裝 Python 3.6.2


          我們想要做的第一件事是安裝最新版的Python,那就是Python 3.6.2。至少是在我寫這篇教程的時候。如果有更新的版本,請使用新版。接下來的步驟也應(yīng)該保持大致相同的做法。
          我們將使用Python 3,因為大部分主要的Python庫已經(jīng)被移植到python 3,并且下一個主要的django版本(2.x)也將不再支持python 2。所以Python 3是正確的選擇。
          最好的方法是通過Homebrew安裝。如果你的Mac還沒有安裝Homebrew的話,在終端中執(zhí)行下面的命令:
          /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
          如果你沒有安裝命令行工具(Command Line Tools),Homebrew的安裝可能需要稍長一點的時間。但它會幫助你處理好一切,所以不用擔心。只需要坐下來等到安裝完成即可。
          當你看到以下消息時,就代表安裝完成了:
          ==> Installation successful!

          ==> Homebrew has enabled anonymous aggregate user behaviour analytics.
          Read the analytics documentation (and how to opt-out) here:
          ?https://docs.brew.sh/Analytics.html

          ==> Next steps:
          - Run `brew help` to get started
          - Further documentation:
          ? ?https://docs.brew.sh
          執(zhí)行下面的命令來安裝Python 3:
          brew install python3
          由于macOS原本已經(jīng)安裝了python 2,所以在安裝python 3之后,你將可以同時使用這兩個版本。
          需要運行Python 2的話,在終端中通過命令 python 啟動。如果想運行Python 3,則使用python3 來啟動。
          我們可以在終端中測試一下:
          python3 --version
          Python 3.6.2
          很棒,python已經(jīng)啟動并正在運行。下一步:虛擬環(huán)境!

          安裝 Virtualenv


          接下來這一步,我們將通過pip(一個管理和安裝Python包的工具)來安裝Virtualenv
          請注意,Homebrew已經(jīng)為你安裝好了pip,在python 3.6.2下的名稱為 pip3
          在終端中,執(zhí)行下面的命令:
          sudo pip3 install virtualenv
          到目前為止,我們執(zhí)行的安裝都是在操作系統(tǒng)環(huán)境下運行的。從現(xiàn)在開始,我們安裝的所有東西,包括django本身,都將安裝在虛擬環(huán)境中。
          這樣想一下:對于你開始的每個Django項目,你首先會為它創(chuàng)建一個虛擬環(huán)境。這就像每個Django項目都有一個沙盒。所以你隨意運行,安裝軟件包,卸載軟件包而不會破壞任何東西。
          我習(xí)慣在電腦上創(chuàng)建一個名為Development的文件夾。然后,我用它來組織我所有的項目和網(wǎng)站。但你也可以按照接下來的步驟創(chuàng)建適合你自己的目錄。
          通常,我首先在Development文件夾中創(chuàng)建一個項目名稱的新文件夾。既然這將是我們第一個項目,我們沒必要挑選一個獨特的名字。現(xiàn)在,我們可以稱之為myproject
          mkdir myproject
          cd myproject
          這個文件夾是級別較高的目錄,將存儲與我們的Django項目相關(guān)的所有文件和東西,包括它的虛擬環(huán)境。
          所以讓我們開始創(chuàng)建我們的第一個虛擬環(huán)境并安裝django。
          myproject文件夾中:
          virtualenv venv -p python3
          這樣我們的虛擬環(huán)境就創(chuàng)建好了。在開始使用它之前,我們需要先激活一下環(huán)境:
          source venv/bin/activate
          如果你在命令行前面看到 (venv),就代表激活成功了,就像這樣:
          讓我們試著了解一下這里發(fā)生了什么。我們創(chuàng)建了一個名為venv的特殊文件夾。該文件夾內(nèi)包含了一個python的副本。在我們激活了venv環(huán)境之后,當我們運行Python命令時,它將使用我們存儲在venv里面的本地副本,而不是我們之前在操作系統(tǒng)中安裝的那個。
          另一個重要的事情是,pip程序也已經(jīng)安裝好了,當我們使用它來安裝Python的軟件包(比如Django)時,它將被安裝在venv環(huán)境中。
          請注意,當我們啟用venv時,我們將使用命令python(而不是python3)來調(diào)用Python 3.6.2,并且僅使用pip(而不是pip3)來安裝軟件包。
          順便說一句,要想退出venv環(huán)境,運行下面的命令:
          deactivate
          但是,我們現(xiàn)在先保持激活狀態(tài)來進行下一步。

          安裝 Django 1.11.4


          很簡單,現(xiàn)在我們已經(jīng)啟動了venv,運行以下命令來安裝django:
          pip install django
          現(xiàn)在一切就緒!

          啟動一個新項目,執(zhí)行下面的命令來創(chuàng)建一個新的 Django 項目:

          django-admin startproject myproject
          命令行工具django-admin會在安裝Django的時候一起自動安裝好。
          執(zhí)行了上面的命令以后,系統(tǒng)會為Django項目生成基礎(chǔ)文件夾結(jié)構(gòu)。
          現(xiàn)在,我們的myproject目錄結(jié)構(gòu)如下所示:
          myproject/ ? ? ? ? ? ? ? ? ?<-- 高級別的文件夾
          |-- myproject/ ? ? ? ? ? ? <-- Django項目文件夾
          | ? ?|-- myproject/
          | ? ?| ? ?|-- __init__.py
          | ? ?| ? ?|-- settings.py
          | ? ?| ? ?|-- urls.py
          | ? ?| ? ?|-- wsgi.py
          | ? ?+-- manage.py
          +-- venv/ ? ? ? ? ? ? ? ? ?<-- 虛擬環(huán)境文件夾
          我們最初的項目結(jié)構(gòu)由五個文件組成:
          • manage.py:使用django-admin命令行工具的快捷方式。它用于運行與我們項目相關(guān)的管理命令。我們將使用它來運行開發(fā)服務(wù)器,運行測試,創(chuàng)建遷移等等。
          • __init.py:這個空文件告訴python這個文件夾是一個python包。
          • settings.py:這個文件包含了所有的項目配置。將來我們會一直提到這個文件!
          • urls.py:這個文件負責映射我們項目中的路由和路徑。例如,如果你想在訪問URL / about/ 時顯示某些內(nèi)容,則必須先在這里做映射關(guān)系。
          • wsgi.py:該文件是用于部署的簡單網(wǎng)關(guān)接口。你可以暫且先不用關(guān)心她的內(nèi)容,就先讓他在那里就好了。

          django自帶了一個簡單的網(wǎng)絡(luò)服務(wù)器。在開發(fā)過程中非常方便,所以我們無需安裝任何其他軟件即可在本地運行項目。我們可以通過執(zhí)行命令來測試一下它:
          python manage.py runserver
          現(xiàn)在,你可以忽略終端中出現(xiàn)的遷移錯誤;我們將在稍后討論。
          現(xiàn)在在Web瀏覽器中打開URL:http://127.0.0.1:8000,你應(yīng)該看到下面的頁面:
          使用組合鍵 Control + C來終止開發(fā)服務(wù)器。

          Django 應(yīng)用


          在Django的哲學(xué)中,我們有兩個重要的概念:
          • app:是一個可以做完成某件事情的Web應(yīng)用程序。一個應(yīng)用程序通常由一組models(數(shù)據(jù)庫表)views(視圖)templates(模板)tests(測試) 組成。
          • project:是配置和應(yīng)用程序的集合。一個項目可以由多個應(yīng)用程序或一個應(yīng)用程序組成。

          請注意,如果沒有一個project,你就無法運行Django應(yīng)用程序。像博客這樣的簡單網(wǎng)站可以完全在單個應(yīng)用程序中編寫,例如可以將其命名為blogweblog

          這是組織源代碼的一種方式。現(xiàn)在剛開始,判斷什么是或不是應(yīng)用程序這些還不太重要。包括如何組織代碼等。現(xiàn)在不用擔心那些問題!首先讓我們對Django的API和基礎(chǔ)知識進行梳理一遍。
          好的!那么,為了方便說明,我們來創(chuàng)建一個簡單的網(wǎng)絡(luò)論壇討論區(qū)。要創(chuàng)建我們的第一個應(yīng)用程序,請?zhí)D(zhuǎn)到manage.py文件所在的目錄并執(zhí)行以下命令:
          django-admin startapp boards
          注意!我們這次使用的命令是startapp
          通過這條指令,系統(tǒng)會給我們創(chuàng)建以下目錄結(jié)構(gòu):
          myproject/
          |-- myproject/
          | ? ?|-- boards/ ? ? ? ? ? ? ? ?<-- 我們新的Django應(yīng)用(app)!
          | ? ?| ? ?|-- migrations/
          | ? ?| ? ?| ? ?+-- __init__.py
          | ? ?| ? ?|-- __init__.py
          | ? ?| ? ?|-- admin.py
          | ? ?| ? ?|-- apps.py
          | ? ?| ? ?|-- models.py
          | ? ?| ? ?|-- tests.py
          | ? ?| ? ?+-- views.py
          | ? ?|-- myproject/
          | ? ?| ? ?|-- __init__.py
          | ? ?| ? ?|-- settings.py
          | ? ?| ? ?|-- urls.py
          | ? ?| ? ?|-- wsgi.py
          | ? ?+-- manage.py
          +-- venv/
          下面,我們來探討每個文件的作用:
          • migrations/:在這個文件夾里,Django會存儲一些文件以跟蹤你在models.py文件中創(chuàng)建的變更,用來保持數(shù)據(jù)庫和models.py的同步。
          • admin.py:這個文件為一個django內(nèi)置的應(yīng)用程序Django Admin的配置文件。
          • apps.py:這是應(yīng)用程序本身的配置文件。
          • models.py:這里是我們定義Web應(yīng)用程序數(shù)據(jù)實例的地方。models會由Django自動轉(zhuǎn)換為數(shù)據(jù)庫表。
          • tests.py:這個文件用來寫當前應(yīng)用程序的單元測試。
          • views.py:這是我們處理Web應(yīng)用程序請求(request)/響應(yīng)(resopnse)周期的文件。

          現(xiàn)在我們創(chuàng)建了我們的第一個應(yīng)用程序,讓我們來配置一下項目以便啟用這個應(yīng)用程序。
          要做到這一點,打開settings.py并嘗試找到INSTALLED_APPS變量:
          settings.py
          INSTALLED_APPS = [
          ? ?'django.contrib.admin',
          ? ?'django.contrib.auth',
          ? ?'django.contrib.contenttypes',
          ? ?'django.contrib.sessions',
          ? ?'django.contrib.messages',
          ? ?'django.contrib.staticfiles',
          ]
          如你所見,Django默認已經(jīng)安裝了6個內(nèi)置應(yīng)用程序。它們提供大多數(shù)Web應(yīng)用程序所需的常用功能,如身份驗證,會話,靜態(tài)文件管理(圖像,JavaScript,CSS等)等。
          我們將會在本系列教程中探索這些應(yīng)用程序。但現(xiàn)在,先不管它們,只需將我們的應(yīng)用程序boards添加到INSTALLED_APPS列表即可:
          INSTALLED_APPS = [
          ? ?'django.contrib.admin',
          ? ?'django.contrib.auth',
          ? ?'django.contrib.contenttypes',
          ? ?'django.contrib.sessions',
          ? ?'django.contrib.messages',
          ? ?'django.contrib.staticfiles',

          ? ?'boards', ?# 譯者注:建議和作者一樣空一行來區(qū)別內(nèi)置app和自定義的app
          ]
          使用前面漫畫正方形和圓圈的比喻,黃色的圓圈就是我們的boards應(yīng)用程序,django.contrib.admin, django.contrib.auth等就是紅色的圓圈。

          Hello, World!


          現(xiàn)在來寫我們的第一個視圖(view)。我們將在下一篇教程中詳細探討它。但現(xiàn)在,讓我們試試看看如何用Django創(chuàng)建一個新頁面。
          打開boards應(yīng)用程序中的views.py文件,并添加以下代碼:
          views.py
          from django.http import HttpResponse

          def home(request):
          ? ?return HttpResponse('Hello, World!')
          視圖是接收httprequest對象并返回一個httpresponse對象的Python函數(shù)。接收 request 作為參數(shù)并返回 response 作為結(jié)果。這個流程你必須記住!
          我們在這里定義了一個簡單的視圖,命名為home,它只是簡單地返回一個信息,一個字符串hello,world!
          現(xiàn)在我們必須告訴Django什么時候會調(diào)用這個view。這需要在urls.py文件中完成:
          urls.py
          from django.conf.urls import url
          from django.contrib import admin

          from boards import views

          urlpatterns = [
          ? ?url(r'^$', views.home, name='home'),
          ? ?url(r'^admin/', admin.site.urls),
          ]
          如果你將上面的代碼片段與你的urls.py文件進行比較,你會注意到我添加了以下新代碼:url(r'^ $',views.home,name ='home')并從我們的應(yīng)用程序boards中導(dǎo)入了views模塊通過from boards import views
          和我之前提到的一樣,我們將在稍后詳細探討這些概念。
          現(xiàn)在,Django使用正則表達式來匹配請求的URL。對于我們的home視圖,我使用^$ 正則,它將匹配一個空路徑,也就是主頁(這個URL:http://127.0.0.1:8000 )。如果我想匹配的URL是 http://127.0.0.1:8000/homepage/ ,那么我的URL正則表達式就會是:url(r'^homepage/$', views.home, name='home')
          我們來看看會發(fā)生什么:
          python manage.py runserver
          在一個Web瀏覽器中,打開 http://127.0.0.1:8000 這個鏈接:
          就是這樣!你剛剛創(chuàng)建成功了你的第一個視圖

          總結(jié)


          這是本系列教程的第一部分。在本教程中,我們學(xué)習(xí)了如何安裝最新的Python版本以及如何設(shè)置開發(fā)環(huán)境。我們還介紹了虛擬環(huán)境,開始了我們的第一個django項目,并已經(jīng)創(chuàng)建了我們的初始應(yīng)用程序。
          我希望你會喜歡第一部分!第二部分將涉及模型,視圖,模板和URLs。我們將一起探索Django所有的基礎(chǔ)知識!
          為了讓我們能夠保持學(xué)習(xí)過程中頁面同步,我在Github上提供了源代碼。這個項目的當前狀態(tài)可以在release tag v0.1-lw下找到。下面是直達鏈接:
          https://github.com/sibtc/django-beginners-guide/tree/v0.1-lw

          見面禮


          碼加我微信備注「三劍客」送你上圖三本Python入門電子書


          推薦閱讀


          1. 因匿名評論“B站能睡小姐姐,我睡了四個”,B站把脈脈給告了

          2. 美團App偷偷給用戶開通金融貸款?!網(wǎng)友:1.5元就讓我貸款?

          3. 一文講透Python數(shù)據(jù)可視化技巧


          點分享
          點收藏
          點點贊
          點在看
          瀏覽 70
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷无码在线 | 中文字幕亚洲在线播放 | 久久婷婷色香五月综合 | 欧美老逼色色 | 亚洲黄色电影网站 |