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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Django的第一步(第一节)

發(fā)布時(shí)間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django的第一步(第一节) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

寫下你的第一個(gè)Django應(yīng)用


第一部分

????讓我們通過例子來學(xué)習(xí).

????在本教程中,我們將引導(dǎo)您完成基本投票應(yīng)用程序的創(chuàng)建.

????其中包括兩部分:

  • 一個(gè)讓人們查看民意調(diào)查并投票的公共網(wǎng)站.
  • 允許您添加,更改和刪除民意調(diào)查的管理網(wǎng)站.

????我們假設(shè)你django已經(jīng)安裝好了,你可以通過下面的shell命令得知django的版本:

python -m django --version

????如果django已經(jīng)安裝好了,你可以看到安裝的版本.如果沒有,你會(huì)得到錯(cuò)誤提示"No module named django".

????這個(gè)教程基于django2.0,支持python3.4以及后面的版本.如果django的版本不匹配,可以在右下角選擇合適的版本,或者升級(jí)django版本.如果你正在使用老版本的python,你可以根據(jù)下圖去找到合適的點(diǎn)擊django版本.



創(chuàng)建一個(gè)項(xiàng)目

????如果這是你第一次使用django,你會(huì)關(guān)心一些初始化設(shè)置.換句話說,你需要下面的指令自動(dòng)生成一個(gè)django項(xiàng)目,其中包含數(shù)據(jù)庫配置,django特定的選項(xiàng)和應(yīng)用特定的選項(xiàng).

????從命令行,cd進(jìn)入你想創(chuàng)建django項(xiàng)目的文件夾,然后執(zhí)行下面的指令:????

django-admin startproject mysite

????這條命令將會(huì)在你的文件夾中創(chuàng)建一個(gè)mysite文件夾.

注釋:

? ? 你需要避免在創(chuàng)建django項(xiàng)目與python或django內(nèi)置組件相同,尤其是,你應(yīng)該避免使用django(與django本身發(fā)生沖突)或者test(與python內(nèi)置文件沖突).

代碼應(yīng)該放置在哪?

????如果你的背景是普通的舊PHP(沒有使用現(xiàn)代框架),那么你可能習(xí)慣于把代碼放在Web服務(wù)器的文檔根目錄下(比如/ var / www).用Django,你不這樣做.將任何Python代碼放入Web服務(wù)器的文檔根目錄中并不是一個(gè)好主意,因?yàn)樗锌赡茏屓藗兡軌蛲ㄟ^Web查看您的代碼.這樣安全性不好.? ??

????將代碼放在文檔根目錄之外的某個(gè)目錄中,例如/ home / mycode.

讓我們看看startproject這個(gè)指令都創(chuàng)建了什么:

mysite/manage.pymysite/__init__.pysettings.pyurls.pywsgi.py下面解釋這些文件:
  • 外部的mysite/是你項(xiàng)目的容器.它的名字不影響django;你可以隨你喜歡地修改名字
  • manage.py:一個(gè)代碼管理工具,可以讓你用各種方式與django進(jìn)行交互.你可以讀到關(guān)于manage.py的所有功能在django-admin and manage.py
  • 內(nèi)部的mysite/是你django項(xiàng)目的實(shí)際文件夾.它的名字是你需要用來導(dǎo)入任何內(nèi)容的Python包名(例如:mysite.urls)
  • mysite/__init__.py:一個(gè)空的文件用來告訴python,這個(gè)文件夾是一個(gè)python包.如果你是一個(gè)python初學(xué)者,建議你先了解一下python包的含義
  • mysite/setting.py:用于配置django的設(shè)置.通過django settings可以了解到settings的工作方式
  • mysite/urls.py:django項(xiàng)目的url管理器,可以設(shè)置你django項(xiàng)目可以訪問的網(wǎng)頁url.通過URL dispatcher可以了解更多關(guān)于URLS
  • mysite/wsgi.py:WSGI兼容的Web服務(wù)器為您的項(xiàng)目提供服務(wù)的入口點(diǎn)

---------------------------------------------------------------------------------------------------------------------

開發(fā)服務(wù)器

? ? 讓我們檢驗(yàn)我的django項(xiàng)目.進(jìn)入外部mysite目錄,運(yùn)行下面的指令:

python manage.py runserver

? ? 你可以看到下面的命令行輸出? ??

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.April 11, 2018 - 19:22:09 Django version 2.0.4, using settings 'blogproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
注釋:

????現(xiàn)在請(qǐng)忽略數(shù)據(jù)庫遷移的問題,這個(gè)問題會(huì)在稍后進(jìn)行處理.

? ? 你已經(jīng)開始使用django開發(fā)服務(wù)器了,這是一個(gè)純粹用Python編寫的輕量級(jí)Web服務(wù)器.這些功能我們已經(jīng)在django中包含了,所以你可以很快地進(jìn)行開發(fā),你可以直接進(jìn)行開發(fā),不需要去配置生產(chǎn)服務(wù)器,比如像Apache這樣的網(wǎng)頁服務(wù)器.

? ? 注意注意!不要在類似于生產(chǎn)環(huán)境的任何情況下使用此服務(wù)器。它僅用于開發(fā)時(shí)使用。 (我們的業(yè)務(wù)是制作Web框架,而不是Web服務(wù)器。)????

? ? 現(xiàn)在服務(wù)器正在運(yùn)行,可以通過http://127.0.0.1:8000/來訪問你的網(wǎng)頁,你可以看到"The install worked successfully! Congratulations!",還有一個(gè)起飛的火箭,說明它正在工作.

切換端口:

? ? runserver這個(gè)命令默認(rèn)會(huì)以8000作為端口號(hào)開啟服務(wù)器.

? ? 如果你想要改變服務(wù)器的端口號(hào),將它作為命令的參數(shù)輸入.下面是個(gè)例子,這個(gè)命令開啟服務(wù)器在8080端口上:

python manager.py runserver 8080

? ? 你如果你想改變服務(wù)器的IP地址,將ip地址與端口號(hào)一起作為參數(shù)傳遞即可,如果出現(xiàn)錯(cuò)誤,如下

Invalid HTTP_HOST header: '127.1.1.1:8080'. You may need to add '127.1.1.1' to ALLOWED_HOSTS.

? ? 說明你需要把該IP加入setting.py文件中ALLOWED_HOSTS中即可.

? ? 如果你想收聽所有可用的公共IP(如果你正在運(yùn)行Vagrant或希望在網(wǎng)絡(luò)上的其他計(jì)算機(jī)上炫耀你的工作,這很有用),請(qǐng)使用:

python manage.py runserver 0:8000 00.0.0.0的簡(jiǎn)稱.有關(guān)開發(fā)服務(wù)器的完整文檔可以在runserver參考中找到。

????

自動(dòng)重新加載服務(wù)器:

? ??您無需重新啟動(dòng)服務(wù)器以使代碼更改生效。但是,某些操作(如添加文件)不會(huì)觸發(fā)重新啟動(dòng),因此在這種情況下您必須重新啟動(dòng)服務(wù).

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

創(chuàng)建一個(gè)Polls應(yīng)用:

? ? 現(xiàn)在你的服務(wù)器環(huán)境已經(jīng)搭建好了,你可以開始工作了.

? ? 你在django中編寫的每一個(gè)應(yīng)用都遵循特定的python包.?django帶有一個(gè)實(shí)用的工具可以自動(dòng)生成應(yīng)用的基本目錄結(jié)構(gòu),所有你可以把注意力放在寫代碼上而不是創(chuàng)建文件目錄.

項(xiàng)目對(duì)比應(yīng)用:

? ? 項(xiàng)目和應(yīng)用的不用是什么呢?應(yīng)用是網(wǎng)頁應(yīng)用程序,它可以執(zhí)行一些操作,比如公共記錄數(shù)據(jù)庫或者簡(jiǎn)單的投票系統(tǒng).項(xiàng)目是一個(gè)特定網(wǎng)頁配置和網(wǎng)頁應(yīng)用程序的集合,一個(gè)項(xiàng)目可以包含多個(gè)應(yīng)用,一個(gè)應(yīng)用可以在多個(gè)項(xiàng)目中.

? ? 你的所有應(yīng)用可以在你python路徑上的任何地方.在本教程中,我們會(huì)創(chuàng)建Poll應(yīng)用與manage.py文件同一個(gè)路徑下,所以它可以被直接作為主模塊被調(diào)用,而不是作為mysite的子模塊.

? ? 創(chuàng)建你的應(yīng)用,確認(rèn)你已經(jīng)進(jìn)入了與manage.py同目錄下,然后執(zhí)行下面的目錄:

python manage.py startapp polls

? ? 這個(gè)命令創(chuàng)建了polls文件夾,?其中目錄像下面這樣:

polls/__init__.pyadmin.pyapps.pymigrations/__init__.pymodels.pytests.pyviews.py? ? 這個(gè)文件夾將包含我們的投票系統(tǒng)應(yīng)用.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

編寫你的第一個(gè)視圖:

? ? 讓我們編寫第一個(gè)視圖.打開polls/views.py這個(gè)文件然后將下面的python代碼寫入:

polls/views.py中? ?? ??

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

? ? 這是可能是django中最簡(jiǎn)單的視圖了.要調(diào)用這個(gè)視圖,我們需要將它映射到一個(gè)URL - 為此我們需要一個(gè)URLconf.

? ? 需要?jiǎng)?chuàng)建一個(gè)URLconf在polls文件夾中.創(chuàng)建一個(gè)文件叫做urls.py.你的文件夾現(xiàn)在應(yīng)該是這樣:

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

? ? 在polls/urls.py文件中加入下面的代碼:

polls/urls.py文件中

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

? ? 下一步是將根的URLconf指向polls.urls模塊.在mysite/urls.py添加導(dǎo)入django.urls.include然后在urlpatterns列表中添加一個(gè)include(),以便導(dǎo)入polls.urls模塊:

mysite/urls.py文件中

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

????include()函數(shù)允許訪問其他的URLconf.任何時(shí)候django碰到include()函數(shù),它會(huì)暫停在這個(gè)URL在當(dāng)前URLconf中的匹配,轉(zhuǎn)而進(jìn)入include函數(shù)中的URLconfs中找尋匹配.

? ? include()函數(shù)的主要想法是讓引用URLs更加方便.因?yàn)橥镀笔窃谧约旱腢RLconf中(polls/urls.py),他們可以被放置在"/polls/"之下,或者"/fun_polls/"之下,或者"/content/polls/"之下,或者其他根目錄之下,這個(gè)應(yīng)用都可以工作.

什么時(shí)候使用include()函數(shù)?
? ? 你應(yīng)該總是使用include()函數(shù)當(dāng)你要添加其他URL模型時(shí).admin.site.urls 是唯一一個(gè)不可以使用的例外.

? ? 你現(xiàn)在已經(jīng)將一個(gè)視圖連接到URLconf了,現(xiàn)在驗(yàn)證它是否工作,運(yùn)行下面的指令:

python manage.py runserver

? ? 通過瀏覽器訪問http://localhost:8000/polls/,然后你應(yīng)該可以看到"Hello, world. You’re at the polls index.",這些是你在index中寫下的.

? ? path()函數(shù)會(huì)傳遞四個(gè)參數(shù),其中兩個(gè)是必須的:路徑(route)視圖(view),兩個(gè)可以可選屬性:kwargs名字(name).我們需要回顧一下這四個(gè)參數(shù).

路徑(route)

路徑是一個(gè)字符串,包含了URL模型.處理請(qǐng)求時(shí),django從urlpattens第一個(gè)URL開始往下,匹配請(qǐng)求的URL,直到找到一個(gè)匹配的URL.

視圖(view)

當(dāng)django找到匹配的URL模式,它將HttpRequest對(duì)象作為第一個(gè)參數(shù)并將路由中的任何“捕獲”值作為關(guān)鍵字參數(shù)調(diào)用指定的視圖函數(shù).我們將稍微舉一個(gè)例子.

kwargs
關(guān)鍵字參數(shù)可以在字典中傳遞給目標(biāo)視圖,我們不打算在教程中使用Django的這個(gè)特性。

名字(name)

命名你的URL可以讓你從django其他地方明確地引用它,特別是在模板中.這個(gè)強(qiáng)大的功能允許你只在單個(gè)文件中對(duì)項(xiàng)目的URL模式進(jìn)行全局修改.

如果你對(duì)基本請(qǐng)求和響應(yīng)流程這一節(jié)感到滿意,請(qǐng)閱讀本教程的第2節(jié)以開始使用數(shù)據(jù)庫。








轉(zhuǎn)載于:https://www.cnblogs.com/GF66/p/9785489.html

總結(jié)

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

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