第一个Django应用程序_part1
一、查看Django是否安裝
參考文檔:https://docs.djangoproject.com/en/1.11/intro/tutorial01/
如果Django已經(jīng)安裝,可以看到安裝的版本號,如果沒有安裝則會看到“No module named django”的錯誤。
MacBook-Pro:~ h$ python3 -m django --version 1.11.11二、創(chuàng)建一個項目
從命令行創(chuàng)建Django項目
django-admin startproject mysite會在當前目錄下生成一個mysite目錄。
注意:給項目命名的時候,項目名稱不能和Pychon或Django的內(nèi)部組件名稱同名。尤其,應該避免使用類似test(與Django自身沖突)或者django(與Python內(nèi)建的包沖突)這個的名稱。
startproject生成以下文件
MacBook-Pro:PycharmProjects h$ tree mysite mysite ├── manage.py └── mysite├── __init__.py├── settings.py├── urls.py└── wsgi.py1 directory, 5 files文件含義:
- 外層的mysite/根目錄僅僅是項目的一個容器。這個名字與Django無關(guān),可以將其命名為任何內(nèi)容(只要不和Django內(nèi)置名稱沖突)。
- manage.py:一個命令行工具,可以是你用多鐘方式對Django項目進行交互。可以在django-admin和manage.py中讀到關(guān)于manage.py的所有細節(jié)。
- 內(nèi)層的mysite/目錄是你的項目的真正的Python包。它是你導入任何東西時將需要使用的Python包的名字(例如:mysite.urls)。
- mysite/__init__.py:一個空簡介,它告訴Python這個目錄應該被看作一個Python包。
- mysite/settings.py:該Django項目的設(shè)置/配置。Django settings將告訴你這些設(shè)置如何工作。
- mysite/url.py:此Django項目的URL聲明:Django驅(qū)動的網(wǎng)址的“目錄”。
- mysite/wsgi.py:用于你的項目的與WSGI兼容的Web服務(wù)器入口。
啟動服務(wù)
切換到mysite目錄內(nèi),執(zhí)行以下命令:
python3 manage.py runserver命令輸出為以下內(nèi)容:
Performing system checks...System check identified no issues (0 silenced).You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.June 12, 2018 - 13:04:52 Django version 1.11.11, using settings 'mysite2.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.注意:暫時忽略有關(guān)未應用數(shù)據(jù)庫遷移的告警;我們很快就處理數(shù)據(jù)庫。
你已經(jīng)開始使用Django開服務(wù)器,這是一個純粹用Python編寫的輕量級Web服務(wù)器。在Django中包含了這個功能,所以您可以快速開發(fā),而無需處理配置生產(chǎn)服務(wù)器(如Apache),
直到你準備上線。
注意:此服務(wù)器僅供開發(fā)時使用。
現(xiàn)在服務(wù)器正在運行,請使用瀏覽器訪問http://127.0.0.1:8000/,你將看懂一個"Welcom to Django"的頁面。如下圖所示:
更改默認端口
默認情況下,runserver命令在內(nèi)部IP的8000端口啟動開發(fā)服務(wù)器。
如果需要改變服務(wù)器的端口,把要使用的端口作為一個命令行參數(shù)傳遞給它,示例:在端口8080上啟動服務(wù)器:
python3 manage.py runserver 8080如果需要改變服務(wù)器的IP地址,把IP地址和端口號防盜一起,例如:要監(jiān)聽服務(wù)器上所有IP地址:
python3 manage.py runserver 0:80000時0.0.0.0的快捷方式。
runserver自動重載
開發(fā)服務(wù)器會根據(jù)需要自動重新載入Python代碼。不必為了使更改的代碼生效而重啟服務(wù)器,然而,一些行為:比如添加文件,不會出發(fā)服務(wù)器的重啟,所以在這種情況下需要手動重啟服務(wù)器。創(chuàng)建一個應用程序
一個項目已經(jīng)建立起來了。在編寫每個Django應用都是遵循特定約定且包含一個Python包。Django自帶一個工具,它可以自動生成應用的基本目錄結(jié)構(gòu)。
應用與項目的區(qū)別
項目與應用之間有什么不同?應用是一個Web應用程序,它完成具體的事項--比如一個博客系統(tǒng)、一個存儲公共檔案的數(shù)據(jù)庫或者一個簡單的投票應用。一個項目是特定網(wǎng)站的配置和應用程序的集合。一個項目可以包含多個應用。一個應用可以運用到多個項目中去。要創(chuàng)建您的應用程序,請確保您位于相同的目錄中manage.py、并輸入以下命令:
python3 manage.py startapp polls這將創(chuàng)建一個目錄polls,其目錄結(jié)構(gòu)如下:
polls/ ├── __init__.py ├── admin.py ├── apps.py ├── migrations │?? └── __init__.py ├── models.py ├── tests.py └── views.py1 directory, 7 filespolls應用將基于這個目錄結(jié)構(gòu)。
我們來寫第一個視圖,打開文件pools/views.py,并在其中寫入以下代碼:
from django.http import HttpResponsedef index(request):return HttpResponse("Hello,world.You're at the polls index.")要調(diào)用視圖,我們需要將其映射到URL,因此需要一個url的配置文件。要在polls目錄中創(chuàng)建url配置文件,創(chuàng)建一個名為urls.py。現(xiàn)在app(pools)目錄下結(jié)構(gòu)如下所示:
polls/ ├── __init__.py ├── admin.py ├── apps.py ├── migrations │?? └── __init__.py ├── models.py ├── tests.py ├── urls.py └── views.py1 directory, 8 files在polls/urls.py文件中寫入以下代碼:
from django.conf.urls import url from . import viewsurlpatterns = [url(r'^$',views.index,name='index'), ]下一步是將根url.py指向polls.url模塊,在mysite/urls.py中,添加對django.conf.url.include的導入,并在urlpatterns列表中插入一個include(),結(jié)果如下:
from django.conf.urls import url,include from django.contrib import adminurlpatterns = [url(r'pools/',include('polls.urls')),url(r'^admin/', admin.site.urls), ]include()方法允許引用其它URLconfs。注意:include()函數(shù)的正則表達式不具有$(字符串結(jié)束的匹配字符),而是使用尾部斜線進行表示。每當Django遇到include()時,它會排除
與此相同的任何部分,并將剩余的字符串發(fā)送到隨附的URLconf進行進一步處理。
當你項目中包含其它URL模式時,應始終使用include()。admin.site.urls是唯一的例外。 何時使用include()?運行以下命令啟動服務(wù):
python3 manage.py runserver在瀏覽器中訪問http://127.0.0.1:8000/polls/?
url()函數(shù)傳遞四個參數(shù)
兩個必須的參數(shù):正則表達式regex和視圖view,兩個可選項:kwargs和name。
url()argument:regex
正則表達式,它是用于匹配字符串中的模式的語法,或者在這種情況下是url模式。Django從第一個正則表達式開始,并將其放在列表中,將請求的URL與每個正則表達式進行比較,直到找到匹配的一個。 請注意,這些正則表達式不搜索GET和POST參數(shù)或域名。例如,在https://www.example.com/myapp/的請求中,URLconf將查找myapp/。在https://www.example.com/myapp/?page=3的請求中,URLconf同樣查找myapp/。url()argument:view
當Django發(fā)現(xiàn)正則表達式匹配時,Django將調(diào)用指定的視圖函數(shù),使用HttpRequest對象作為第一個參數(shù),并將正則表達式中的任何“捕獲”值作為其它參數(shù)。如果正則表達式使用簡單的捕獲,則值作為位置參數(shù)傳遞;如果它使用命名捕獲,則值作為關(guān)鍵字參數(shù)傳遞。url()argument:kwargs
任意關(guān)鍵字參數(shù)可以在字典匯總傳遞到目標視圖url()argument:name
命名你的URL可讓你從Django其它地方明確地應用它,特別是在模版中。?
轉(zhuǎn)載于:https://www.cnblogs.com/hwlong/p/9175116.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的第一个Django应用程序_part1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高德地图开发 怎么去除城市信息
- 下一篇: Apollo2.5摄像头安装