編寫你的第一個Django應用

安裝 Python

做爲一個 Python Web 框架,Django 須要 Python。更多細節請參見 我應該使用哪一個版本的 Python 來配合 Django?html

Python 包含了一個名爲 SQLite 的輕量級數據庫,因此你暫時沒必要自行設置一個數據庫。python

最新版本的 Python 能夠經過訪問 https://www.python.org/downloads/ 或者操做系統的包管理工具獲取。linux

你能夠在你的 shell 中輸入 python 來肯定你是否安裝過 Python;你看到的多是像這樣子web

Python 3.x.y [GCC 4.x] on linux Type "help", "copyright", "credits" or "license" for more information. >>>

設置數據庫

此步驟僅在你打算使用諸如 PostgreSQL, MySQL, 或者 Oracle 這些大型數據庫引擎時須要。要安裝這種數據庫, 請參考 database installation information正則表達式

安裝 Django

你有三個簡單的方法來安裝 Django:sql

驗證

若要驗證 Django 是否能被 Python 識別,能夠在 shell 中輸入 python。 而後在 Python 提示符下,嘗試導入 Django:shell

>>> import django
>>> print(django.get_version())
2.1

固然了,你也可能安裝的是其它版本的 Django。


編寫你的第一個 Django 應用

它將由兩部分組成:數據庫

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

咱們假定你已經閱讀了 安裝 Django。你能知道 Django 已被安裝,且安裝的是哪一個版本,經過在命令提示行輸入命令(由 $ 前綴)。django

$ python -m django --version

若是這行命令輸出了一個版本號,證實你已經安裝了此版本的 Django;若是你獲得的是一個「No module named django」的錯誤提示,則代表你還未安裝。bootstrap

這個教程是爲了 Django 2.1 寫的,它支持 Python 3.5 和後續版本。若是 Django 的版本不匹配,你能夠經過頁面右下角的版本切換器切換到對應你版本的教程,或更新至最新版本。若是你正在使用一個較老版本的 Python,在 我應該使用哪一個版本的 Python 來配合 Django? 查找一個合適的 Django 版本。

你能夠查看文檔 如何安裝 Django 來得到關於移除舊版本,安裝新版本的流程和建議。

 

建立項目

若是這是你第一次使用 Django 的話,你須要一些初始化設置。也就是說,你須要用一些自動生成的代碼配置一個 Django project —— 即一個 Django 項目實例須要的設置項集合,包括數據庫配置、Django 配置和應用程序配置。

打開命令行,cd 到一個你想放置你代碼的目錄,而後運行如下命令:

$ django-admin startproject mysite

這行代碼將會在當前目錄下建立一個  目錄。若是命令失敗了,查看 運行``django-admin``時遇到的問題,可能能給你提供幫助。

讓咱們看看  建立了些什麼:

mysitestartproject
mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py

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

  • 最外層的:file: mysite/ 根目錄只是你項目的容器, Django 不關心它的名字,你能夠將它重命名爲任何你喜歡的名字。
  • manage.py: 一個讓你用各類方式管理 Django 項目的命令行工具。你能夠閱讀 django-admin and manage.py 獲取全部 manage.py 的細節。
  • 裏面一層的 mysite/ 目錄包含你的項目,它是一個純 Python 包。它的名字就是當你引用它內部任何東西時須要用到的 Python 包名。 (好比 mysite.urls).
  • mysite/__init__.py:一個空文件,告訴 Python 這個目錄應該被認爲是一個 Python 包。若是你是 Python 初學者,閱讀官方文檔中的 更多關於包的知識
  • mysite/settings.py:Django 項目的配置文件。若是你想知道這個文件是如何工做的,請查看 Django settings 瞭解細節。
  • mysite/urls.py:Django 項目的 URL 聲明,就像你網站的「目錄」。閱讀 URL調度器 文檔來獲取更多關於 URL 的內容。
  • mysite/wsgi.py:做爲你的項目的運行在 WSGI 兼容的Web服務器上的入口。閱讀 如何使用 WSGI 進行部署 瞭解更多細節。

確認一下你的 Django 項目是否真的建立成功了。若是你的當前目錄不是外層的 mysite 目錄的話,請切換到此目錄,而後運行下面的命令:

$ python manage.py runserver

 

剛剛啓動的是 Django 自帶的用於開發的簡易服務器,它是一個用純 Python 寫的輕量級的 Web 服務器。咱們將這個服務器內置在 Django 中是爲了讓你能快速的開發出想要的東西,由於你不須要進行配置生產級別的服務器(好比 Apache)方面的工做,除非你已經準備好投入生產環境了。

如今是個提醒你的好時機:千萬不要 將這個服務器用於和生產環境相關的任何地方。這個服務器只是爲了開發而設計的。(咱們在 Web 框架方面是專家,在 Web 服務器方面並非。)

如今,服務器正在運行,瀏覽器訪問 https://127.0.0.1:8000/。你將會看到一個「祝賀」頁面,隨着一隻火箭發射,服務器已經運行了。

 

建立投票應用

應用能夠存放在任何 Python path 中定義的路徑。在這個教程中,咱們將在你的 manage.py 同級目錄下建立投票應用。這樣它就能夠做爲頂級模塊導入,而不是 mysite 的子模塊。

請肯定你如今處於 manage.py 所在的目錄下,而後運行這行命令來建立一個應用:

$ python manage.py startapp polls

這將會建立一個  目錄,它的目錄結構大體以下:

polls
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py

這個目錄結構包括了投票應用的所有內容。

編寫第一個視圖

讓咱們開始編寫第一個視圖吧。打開 polls/views.py,把下面這些 Python 代碼輸入進去:

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

這是 Django 中最簡單的視圖。若是想看見效果,咱們須要將一個 URL 映射到它——這就是咱們須要 URLconf 的緣由了。

爲了建立 URLconf,請在 polls 目錄裏新建一個 urls.py 文件。你的應用目錄如今看起來應該是這樣:

 

polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py

在  中,輸入以下代碼:

polls/urls.py
polls/urls.py
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]

下一步是要在根 URLconf 文件中指定咱們建立的  模塊。在  文件的 列表裏插入一個 , 以下:

polls.urlsmysite/urls.pyurlpatternsinclude()
mysite/urls.py
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]

ali-4c327595919b:PycharmProjects drizzle$ tree django/
django/
└── mysite
├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── settings.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── wsgi.cpython-36.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── polls
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-36.pyc
│   ├── urls.cpython-36.pyc
│   └── views.cpython-36.pyc
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py

 

函數 include() 容許引用其它 URLconfs。每當 Django 遇到 :func:~django.urls.include 時,它會截斷與此項匹配的 URL 的部分,並將剩餘的字符串發送到 URLconf 以供進一步處理。

咱們設計 include() 的理念是使其能夠即插即用。由於投票應用有它本身的 URLconf( polls/urls.py ),他們可以被放在 "/polls/" , "/fun_polls/" ,"/content/polls/",或者其餘任何路徑下,這個應用都可以正常工做。

 

如今把 index 視圖添加進了 URLconf。能夠驗證是否正常工做,運行下面的命令:

 

$ python manage.py runserver

用你的瀏覽器訪問 http://localhost:8000/polls/,你應該可以看見 "Hello, world. You're at the polls index." ,這是你在  視圖中定義的。

測試結果index

 

 
      
 
 
 
 

 





 

 

 

 

Linux下安裝Django

  Django是基於Python開發的免費的開源網站框架,也是python web開發中重量級的web框架,能夠用於快速搭建高性能而且優雅的網站!

  下面以Fedora爲例安裝Django,最新Fedora 23集成了python 3.4.3,因此能夠直接安裝django,同時建議不要使用本身編譯安裝的python來安裝django,這樣可能會出問題,由於不少東西要依賴於系統自己,本身編譯安裝的python只用來開發本地應用,而不是web開發;另外在Fedora中,輸入python會提示命令找不到,而輸入python3會進入python交互式界面,那是由於/usr/bin/下只有python3軟連接,連接到python3.4,而並無python這個連接,因此爲了後來方便,咱們能夠創建一個軟連接python,不用每次都再輸python3了,命令以下:

ln -s /usr/bin/python3 /usr/bin/python

  這樣就創建了一個軟連接,之後隨時輸入python便可了,好的,下面正式的開始安裝Django

  安裝django以前,首先要安裝pip,pip是一種相似yum這樣的軟件安裝工具,用它能夠很方便的安裝軟件,而且自動解決版本升級問題,實際上pip是專門安裝和管理python包的工具,是easy_install的替代品,因此要先安裝pip,pip的在python官網的連接是:https://pypi.python.org/pypi/pip/

  進去上述網站以後,點擊Installation就能夠進入安裝說明界面了,網址是:https://pip.pypa.io/en/latest/installing/

  

  緊接着咱們就看到,pip的安裝方法之一就是使用get-pip.py腳原本安裝,咱們能夠複製get-pip.py的連接,也能夠先下載到本地計算機上而後上傳至服務器,能夠看到get-pip.py的連接是:https://bootstrap.pypa.io/get-pip.py

  執行下面命令下載該文件:

wget https://bootstrap.pypa.io/get-pip.py

  下載完以後,根據官網說明,要使用本地的python運行該腳本:

python get-pip.py

  稍等一下pip就安裝成功了,能夠經過執行的pip命令查看對應的參數,下面使用pip來安裝django,django官網有詳細的教程:https://www.djangoproject.com/,根聽說明知道,安裝django的命令是:pip install Django,這樣運行默認安裝的是最新版,目前是1.9.2,由於python版本的緣由,因此會出現錯誤,安裝失敗,根據測試在python3.4基礎上安裝Django 1.8.9正式版是沒有問題的,因此要執行下面命令:

pip install Django==1.8.9

  回車後稍等一會,須要下載相應的文件,等執行完畢,Django 1.8.9就安裝成功了,若是是CentOS 6.6或者更低版本,系統上帶的python版本是2.6.6,那麼通過測試安裝Django 1.5.8是沒有任何問題的因此用pip應該是:pip install Django==1.5.8

  等安裝完成以後,執行python進入交互式界面,輸入import django,而後再輸入django.VERSION回車後能夠看到剛剛安裝的Django的版本號,或者直接執行下面命令:

python -c "import django; print(django.get_version())"

  這同時也說明django安裝成功了

  接下來能夠開始建立web應用了,在咱們的根目錄下隨便建立一個目錄,用來專門放置Django項目,在該目錄下執行下面命令:

django-admin.py startproject HelloDjango

  這就是建立django項目的命令,使用pip安裝django後,在/usr/bin/下會生成django-admin.py新版本中也會生成django-admin可執行文件,因此也能夠執行:django-admin startproject HelloDjango建立項目,建立後咱們進入項目目錄:

cd HelloDjango/

  進入目錄以後,能夠經過tree命令查看目錄結構,若是提示沒有tree命令的話,可使用yum -y install tree命令來安裝

  

  咱們能夠看到初始目錄的文件了,項目目錄下manage.py是一個實用的命令行工具,能夠經過它管理django服務器等,容器下還有一個和容器同名的HelloDjango目錄,__init__.py是項目初始化文件,告訴python該目錄是一個python包,settings.py是用來進行項目配置的文件,urls.py是項目中全部的url聲明,能夠認爲是django驅動整個項目的url目錄,能夠定義多種優雅的路由請求,wsgi.py是一個WSGI兼容的Web服務器入口,方便運行web項目。如今這就是一個初始的項目,咱們接下來啓動這個項目:

python manage.py runserver 主機ip:80

  由於要從局域網訪問因此後面咱們本身定義的是服務器自己的ip和端口號,啓動以後命令行進入等待,訪問以前不要忘了關閉防火牆,對於centos可使用以下命令關閉:

/etc/init.d/iptables stop

  對於我如今使用的Fedora,關閉命令是:

/bin/systemctl stop firewalld.service

  關閉防火牆以後,咱們經過瀏覽器訪問http://hostIP/便可以打開頁面,

  看到這個頁面說明django運行一切正常了,瀏覽器每發出請求,服務器都會更新消息:

  

  經過Ctrl+C快捷鍵能夠終止服務器,接下來咱們新建一個簡單的測試應用,能夠在HelloDjango下直接創建視圖文件,可是爲了應用結構的清晰不建議這樣作,正確方法是在容器根目錄下,使用以下命令能夠創建一個應用,一個項目能夠包括多個應用:

python manage.py startapp app1

  這樣在容器下就會出現一個app1的目錄,結構以下:

  

  每一個源文件的含義也不難理解,下面使用vim打開views.py,若是沒有vim可使用yum install vim進行安裝 

  打開後views.py是空的,有用的只有頭部一行代碼,是用於後來模板渲染的

  

  如今咱們直接補充以下代碼,打印一行簡單的輸出:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello Django!")

  頭部包含了請求庫,每一個方法都必須有request參數,這是用來接收請求的,HttpResponse方法的做用就是響應請求,而後保存視圖文件,進入項目下的HelloDjango目錄,編輯settings.py配置文件,找到INSTALLED_APPS配置項,追加一項app1,將應用app1添加到項目容器

  

  保存以後,編輯urls.py文件,頭部追加一行from app1 import views as app1_views,這個app_views是咱們本身定義的導入的視圖名,而後給urlpatterns這個列表添加一項:url(r'^$', app1_views.index),  注意後面要有一個逗號,前面是定義請求url的正則表達式,後面是響應輸出的視圖方法,這裏正則表達式匹配爲空,就是表明的根目錄,以下圖,帶有# new註釋的是新增的代碼:

  

  如今保存,回到容器下再次運行:python manage.py runserver hostip:80啓動開發服務器,用瀏覽器訪問便可

  

  下面能夠在以前的視圖中再定義一個方法,

def home(request):
    return render(request, 'home.html')

  使用render方法以前要使用from django.shortcuts import render導入對應庫,由於前面默認導入了因此不用再次導入了,render方法的做用就是調用對應的視圖模板也就是home.html,那麼home.html放到什麼地方呢,在app1目錄下執行下面命令:

$ mkdir templates
$ cd templates/
$ vim home.html

  在django加載app1應用時,會自動讀取templates模板目錄從而渲染裏面的數據,home.html就是一個網頁模板,爲了簡單,沒有添加動態的數據:

按 Ctrl+C 複製代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>home視圖</title>
</head>
<body>
<h3>Hello Django!</h3>
</body>
</html>


按 Ctrl+C 複製代碼

  一樣添加urls.py的配置項,設置訪問url,代碼就是下圖列表中的第三項:

  

  保存後,一樣啓動服務器,訪問http://hostip/home就能夠看到對應的響應

  

  以上就是Django基本的安裝和最簡單的例子。

相關文章
相關標籤/搜索