第一個Django應用程序_part1

1、查看Django是否安裝

參考文檔:https://docs.djangoproject.com/en/1.11/intro/tutorial01/

若是Django已經安裝,能夠看到安裝的版本號,若是沒有安裝則會看到「No module named django」的錯誤。python

MacBook-Pro:~ h$ python3 -m django --version 1.11.11

2、建立一個項目

從命令行建立Django項目

django-admin startproject mysite

會在當前目錄下生成一個mysite目錄。正則表達式

注意:給項目命名的時候,項目名稱不能和Pychon或Django的內部組件名稱同名。尤爲,應該避免使用相似test(與Django自身衝突)或者django(與Python內建的包衝突)這個的名稱。數據庫

startproject生成如下文件django

MacBook-Pro:PycharmProjects h$ tree mysite mysite ├── manage.py └── mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py 1 directory, 5 files

文件含義:瀏覽器

  • 外層的mysite/根目錄僅僅是項目的一個容器。這個名字與Django無關,能夠將其命名爲任何內容(只要不和Django內置名稱衝突)。
  • manage.py:一個命令行工具,能夠是你用多鍾方式對Django項目進行交互。能夠在django-admin和manage.py中讀到關於manage.py的全部細節。
  • 內層的mysite/目錄是你的項目的真正的Python包。它是你導入任何東西時將須要使用的Python包的名字(例如:mysite.urls)。
  • mysite/__init__.py:一個空簡介,它告訴Python這個目錄應該被看做一個Python包。
  • mysite/settings.py:該Django項目的設置/配置。Django settings將告訴你這些設置如何工做。
  • mysite/url.py:此Django項目的URL聲明:Django驅動的網址的「目錄」。
  • mysite/wsgi.py:用於你的項目的與WSGI兼容的Web服務器入口。

啓動服務

切換到mysite目錄內,執行如下命令:服務器

python3 manage.py runserver

命令輸出爲如下內容:session

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.

注意:暫時忽略有關未應用數據庫遷移的告警;咱們很快就處理數據庫。app

你已經開始使用Django開服務器,這是一個純粹用Python編寫的輕量級Web服務器。在Django中包含了這個功能,因此您能夠快速開發,而無需處理配置生產服務器(如Apache),ide

直到你準備上線。函數

注意:此服務器僅供開發時使用。

如今服務器正在運行,請使用瀏覽器訪問http://127.0.0.1:8000/,你將看懂一個"Welcom to Django"的頁面。以下圖所示:

更改默認端口

默認狀況下,runserver命令在內部IP的8000端口啓動開發服務器。

若是須要改變服務器的端口,把要使用的端口做爲一個命令行參數傳遞給它,示例:在端口8080上啓動服務器:

python3 manage.py runserver 8080

若是須要改變服務器的IP地址,把IP地址和端口號防盜一塊兒,例如:要監聽服務器上全部IP地址:

python3 manage.py runserver 0:8000

0時0.0.0.0的快捷方式。

runserver自動重載

開發服務器會根據須要自動從新載入Python代碼。沒必要爲了使更改的代碼生效而重啓服務器,然而,一些行爲:好比添加文件,不會出發服務器的重啓,因此在這種狀況下須要手動重啓服務器。

建立一個應用程序

一個項目已經創建起來了。在編寫每一個Django應用都是遵循特定約定且包含一個Python包。Django自帶一個工具,它能夠自動生成應用的基本目錄結構。

應用與項目的區別

項目與應用之間有什麼不一樣?應用是一個Web應用程序,它完成具體的事項--好比一個博客系統、一個存儲公共檔案的數據庫或者一個簡單的投票應用。一個項目是特定網站的配置和應用程序的集合。一個項目能夠包含多個應用。一個應用能夠運用到多個項目中去。

要建立您的應用程序,請確保您位於相同的目錄中manage.py、並輸入如下命令:

python3 manage.py startapp polls

這將建立一個目錄polls,其目錄結構以下:

polls/ ├── __init__.py ├── admin.py ├── apps.py ├── migrations │   └── __init__.py ├── models.py ├── tests.py └── views.py 1 directory, 7 files

polls應用將基於這個目錄結構。

咱們來寫第一個視圖,打開文件pools/views.py,並在其中寫入如下代碼:

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

要調用視圖,咱們須要將其映射到URL,所以須要一個url的配置文件。要在polls目錄中建立url配置文件,建立一個名爲urls.py。如今app(pools)目錄下結構以下所示:

polls/ ├── __init__.py ├── admin.py ├── apps.py ├── migrations │   └── __init__.py ├── models.py ├── tests.py ├── urls.py └── views.py 1 directory, 8 files

在polls/urls.py文件中寫入如下代碼:

from django.conf.urls import url from . import views urlpatterns = [ url(r'^$',views.index,name='index'), ]

下一步是將根url.py指向polls.url模塊,在mysite/urls.py中,添加對django.conf.url.include的導入,並在urlpatterns列表中插入一個include(),結果以下:

from django.conf.urls import url,include from django.contrib import admin urlpatterns = [ url(r'pools/',include('polls.urls')), url(r'^admin/', admin.site.urls), ]

include()方法容許引用其它URLconfs。注意:include()函數的正則表達式不具備$(字符串結束的匹配字符),而是使用尾部斜線進行表示。每當Django遇到include()時,它會排除

與此相同的任何部分,並將剩餘的字符串發送到隨附的URLconf進行進一步處理。

當你項目中包含其它URL模式時,應始終使用include()。admin.site.urls是惟一的例外。
什麼時候使用include()

 運行如下命令啓動服務:

python3 manage.py runserver

在瀏覽器中訪問http://127.0.0.1:8000/polls/ 

url()函數傳遞四個參數

兩個必須的參數:正則表達式regex和視圖view,兩個可選項:kwargs和name。

url()argument:regex

正則表達式,它是用於匹配字符串中的模式的語法,或者在這種狀況下是url模式。Django從第一個正則表達式開始,並將其放在列表中,將請求的URL與每一個正則表達式進行比較,直到找到匹配的一個。 請注意,這些正則表達式不搜索GET和POST參數或域名。例如,在https://www.example.com/myapp/的請求中,URLconf將查找myapp/。在https://www.example.com/myapp/?page=3的請求中,URLconf一樣查找myapp/。

url()argument:view

當Django發現正則表達式匹配時,Django將調用指定的視圖函數,使用HttpRequest對象做爲第一個參數,並將正則表達式中的任何「捕獲」值做爲其它參數。若是正則表達式使用簡單的捕獲,則值做爲位置參數傳遞;若是它使用命名捕獲,則值做爲關鍵字參數傳遞。

url()argument:kwargs

任意關鍵字參數能夠在字典彙總傳遞到目標視圖

url()argument:name

命名你的URL可以讓你從Django其它地方明確地應用它,特別是在模版中。
相關文章
相關標籤/搜索