天天看點

Python [4] Django的安裝和基礎運作環境簡介

一、Django簡介

Django是一個開放源代碼的Web應用架構,由Python寫成。采用了MVC的軟體設計模式,即模型M,視圖V和控制器C。它最初是被開發來用于管 理勞倫斯出版集團旗下的一些以新聞内容為主的網站的,即是CMS(内容管理系統)軟體。并于2005年7月在BSD許可證下釋出。這套架構是以比利時的吉 普賽爵士吉他手Django Reinhardt來命名的。

二、pip的應用

(1)什麼是pip???

pip是一個安裝和管理Python包的工具,是 easy_install 的一個替換品。

distribute是setuptools的取代(Setuptools包後期不再維護了),pip是easy_install的取代。

pip的安裝需要setuptools 或者 distribute,如果你使用的是Python3.x那麼就隻能使用distribute因為Python3.x不支援setuptools。

(2)安裝pip的兩種方式

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code>方式1:通過yum的方式安裝pip</code>

<code># rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</code>

<code># sed -i 's/^#//' /etc/yum.repos.d/epel.repo</code>

<code># sed -i 's/mirrorlist/#mirrorlist/' /etc/yum.repos.d/epel.repo</code>

<code># yum -y install python-pip</code>

<code>方式2:通過源碼編譯安裝pip</code>

<code># wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz</code>

<code># tar xf setuptools-1.4.2.tar.gz </code>

<code># cd setuptools-1.4.2</code>

<code># python setup.py install </code>

<code># easy_install --version</code>

<code># cd ../</code>

<code># wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz</code>

<code># tar xf pip-1.4.1.tar.gz </code>

<code># cd pip-1.4.1</code>

<code># python setup.py install</code>

(3)pip的基本使用

<code>安裝特定版本的package,通過使用==, &gt;=, &lt;=, &gt;, &lt;來指定一個版本号。</code>

<code>pip安裝django,并指定安裝的版本</code>

<code># pip install 'django==1.6.5'</code>

<code>pip解除安裝django</code>

<code># pip uninstall django</code>

<code>pip查詢包</code>

<code># pip search 'django'</code>

<code>pip更新包</code>

<code># pip install -U 'django'</code>

<code>列出pip安裝的包</code>

<code># pip freeze</code>

三、安裝Django

在linux環境下,安裝Django有兩種方式

(1)通過pip工具安裝django

(2)通過源碼編譯安裝django

<code># tar xf Django-1.6.10.tar.gz </code>

<code># cd Django-1.6.10</code>

(3)導入django子產品并檢視版本号,如果沒有錯誤輸出,說明django安裝是成功的

<code>[root@localhost ~]</code><code># python -c 'import django;print (django.get_version())'</code>

<code>1.6.10</code>

四、Django建立項目和應用

(1)建立一個項目

<code>[root@localhost ~]</code><code># django-admin.py startproject webproject</code>

<code>[root@localhost ~]</code><code># tree ./</code>

<code>./</code>

<code>└── webproject     </code><code>#外層目錄隻是你項目的一個容器,可以任意重命名</code>

<code>    </code><code>├── manage.py    </code><code>#一個實用的指令行工具,可讓你以各種方式與該 Django 項目進行互動</code>

<code>    </code><code>└── webproject </code><code>#目錄是你項目中的實際 Python 包。該目錄名就是 Python 包名,通過它你可以導入它裡面的任何東西</code>

<code>        </code><code>├── __init__.py    </code><code>#一個空檔案,告訴 Python 該目錄是一個 Python 包</code>

<code>        </code><code>├── settings.py    </code><code>#該 Django 項目的設定/配置   </code>

<code>        </code><code>├── urls.py        </code><code>#該 Django 項目的 URL 聲明; 一份由 Django 驅動的網站“目錄”  </code>

<code>        </code><code>└── wsgi.py        </code><code>#一個 WSGI 相容的 Web 伺服器的入口,以便運作你的項目</code>

<code>2 directories, 5 files</code>

(2)建立應用程式

<code>[root@localhost ~]</code><code># cd webproject/</code>

<code>[root@localhost webproject]</code><code># django-admin.py startapp blog</code>

<code>[root@localhost webproject]</code><code># tree .</code>

<code>.</code>

<code>├── blog</code>

<code>│   ├── admin.py</code>

<code>│   ├── __init__.py</code>

<code>│   ├── models.py</code>

<code>│   ├── tests.py</code>

<code>│   └── views.py</code>

<code>├── manage.py</code>

<code>└── webproject</code>

<code>    </code><code>├── __init__.py</code>

<code>    </code><code>├── settings.py</code>

<code>    </code><code>├── urls.py</code>

<code>    </code><code>└── wsgi.py</code>

(3)修改django配置檔案

<code>#需要修改三處位置</code>

<code>[root@localhost ~]</code><code># vim webproject/settings.py</code>

<code>INSTALLED_APPS = (</code>

<code>    </code><code>'django.contrib.admin'</code><code>,</code>

<code>    </code><code>'django.contrib.auth'</code><code>,</code>

<code>    </code><code>'django.contrib.contenttypes'</code><code>,</code>

<code>    </code><code>'django.contrib.sessions'</code><code>,</code>

<code>    </code><code>'django.contrib.messages'</code><code>,</code>

<code>    </code><code>'django.contrib.staticfiles'</code><code>,</code>

<code>    </code><code>'blog'</code><code>,     </code><code>#第一處添加blog應用</code>

<code>)</code>

<code>LANGUAGE_CODE = </code><code>'zh-cn'</code>       <code>#第二處修改為中文</code>

<code>TIME_ZONE = </code><code>'Asia/Shanghai'</code>       <code>#第三處修改時區</code>

(4)配置url通路路徑

<code>[root@localhost ~]</code><code># vim webproject/urls.py</code>

<code>urlpatterns = patterns(</code><code>''</code><code>,</code>

<code>    </code><code># Examples:</code>

<code>    </code><code># url(r'^$', 'webproject.views.home', name='home'),</code>

<code>    </code><code># url(r'^blog/', include('blog.urls')),</code>

<code>    </code><code>url(r</code><code>'^admin/'</code><code>, include(admin.site.urls)),</code>

<code>    </code><code>url(r</code><code>'^blog$'</code><code>,</code><code>'blog.views.index'</code><code>),      </code><code>#添加一行</code>

<code>    </code><code>#正則比對,僅通路到^blog目錄就重定向到blog.views中的index方法,是以在views.py裡面應該定義好index函數/方法</code>

(5)建立視圖

<code>[root@localhost webproject]</code><code># vim blog/views.py</code>

<code>from django.shortcuts </code><code>import</code> <code>render</code>

<code>from django.http </code><code>import</code> <code>HttpResponse</code>

<code># Create your views here.</code>

<code>def index(req):</code>

<code>    </code><code>return</code> <code>HttpResponse(</code><code>'&lt;h1&gt;hello django!!!&lt;/h&gt;'</code><code>)</code>

(6)運作django服務

<code>[root@localhost webproject]</code><code># python manage.py runserver 0.0.0.0:80</code>

<code>Validating models...</code>

<code>0 errors found</code>

<code>February 11, 2015 - 11:58:44</code>

<code>Django version 1.6.10, using settings </code><code>'webproject.settings'</code>

<code>Starting development server at http:</code><code>//0</code><code>.0.0.0:80/</code>

<code>Quit the server with CONTROL-C.</code>

<code>[11</code><code>/Feb/2015</code> <code>11:59:23] </code><code>"GET / HTTP/1.1"</code> <code>404 2003</code>

<code>[11</code><code>/Feb/2015</code> <code>11:59:28] </code><code>"GET /blo HTTP/1.1"</code> <code>404 2012</code>

<code>[11</code><code>/Feb/2015</code> <code>11:59:30] </code><code>"GET /blog HTTP/1.1"</code> <code>200 23</code>

五、浏覽器通路

<a href="http://s3.51cto.com/wyfs02/M00/59/A9/wKiom1Ta17eR3THHAAD5nE1KEXk317.jpg" target="_blank"></a>

六、模闆層(template)

上述是通過調用blog.views中的index方法,傳回一個頁面!!!

<code>from django.http </code><code>import</code> <code>HttpRespomse</code>

<code>    </code><code>return</code> <code>HttpRespose(&lt;h1&gt;hello django!!!&lt;</code><code>/h1</code><code>&gt;)</code>

實際應用中這種方法顯然不适合,那麼接下來我們就聊聊HTML代碼如何嵌套在Django中,有兩種方式:

靜态頁面

方式一:

通過template加載模闆,生成Context對象,存放模闆所需資料,通過模闆對象對資料進行渲染,然後通過HttpResponse輸出。

模闆檔案放在應用程式下面templates目錄,這個目錄預設不存在需要手動建立

(1)首先檢視目前所處的位置和整體項目的目錄檔案結構

18

19

20

21

22

23

24

25

26

<code>[root@localhost webproject]</code><code># pwd</code>

<code>/root/webproject</code>

<code>├── blog       </code><code>#應用</code>

<code>│?? ├── admin.py</code>

<code>│?? ├── admin.pyc</code>

<code>│?? ├── __init__.py</code>

<code>│?? ├── __init__.pyc</code>

<code>│?? ├── models.py</code>

<code>│?? ├── models.pyc</code>

<code>│?? ├── tests.py</code>

<code>│?? ├── views.py</code>

<code>│?? └── views.pyc</code>

<code>└── webproject </code><code>#項目</code>

<code>    </code><code>├── __init__.pyc</code>

<code>    </code><code>├── settings.pyc</code>

<code>    </code><code>├── urls.pyc</code>

<code>    </code><code>├── wsgi.py</code>

<code>    </code><code>└── wsgi.pyc</code>

<code>2 directories, 18 files</code>

(2)建立我們的第二個應用www

<code>[root@localhost webproject]</code><code># django-admin.py startapp www</code>

<code>[root@localhost webproject]</code><code># ls</code>

<code>blog  manage.py  webproject  www</code>

(3)更新項目配置檔案,釋出新應用并設定url

<code>[root@localhost webproject]</code><code># vim webproject/settings.py</code>

<code>    </code><code>'blog'</code><code>,</code>

<code>    </code><code>'www'</code><code>,      </code><code>#添加新行</code>

<code>[root@localhost webproject]</code><code># vim webproject/urls.py</code>

<code>    </code><code>url(r</code><code>'^blog$'</code><code>,</code><code>'blog.views.index'</code><code>),</code>

<code>    </code><code>url(r</code><code>'^www$'</code><code>,</code><code>'www.views.index'</code><code>),    </code><code>#添加新行</code>

(4)建立模闆目錄并生成html檔案

<code>[root@localhost webproject]</code><code># mkdir www/templates</code>

<code>[root@localhost webproject]</code><code># cat www/templates/index.html </code>

<code>&lt;!DOCTYPE html PUBLIC </code><code>"-//W3C//DTD XHTML 1.0 Transitional//EN"</code> <code>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</code><code>&gt;</code>

<code>&lt;html xmlns=</code><code>"http://www.allentuns.com/1999/xhtml"</code><code>&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>&lt;meta http-equiv=</code><code>"Content-Type"</code> <code>content=</code><code>"text/html; charset=utf-8"</code> <code>/&gt;</code>

<code>&lt;title&gt;My Django Page&lt;</code><code>/title</code><code>&gt;</code>

<code>&lt;</code><code>/head</code><code>&gt;</code>

<code>&lt;body&gt;</code>

<code>   </code><code>&lt;h1&gt;Hello Django!!!&lt;</code><code>/h1</code><code>&gt;</code>

<code>&lt;</code><code>/body</code><code>&gt;</code>

<code>&lt;</code><code>/html</code><code>&gt;</code>

(5)修改應用的視圖檔案views

<code>[root@localhost webproject]</code><code># vim www/views.py </code>

<code>from django.template </code><code>import</code> <code>loader,Context   </code><code>#導入django的兩個對象loader和Context</code>

<code>    </code><code>t = loader.get_template(</code><code>'index.html'</code><code>) </code><code>#導入模闆檔案www/templates/index.html</code>

<code>    </code><code>c = Context({})           </code><code>#建立Context對象,用于存放提供給模闆的資料(用于動态網頁)</code>

<code>    </code><code>return</code> <code>HttpResponse(t.render(c))</code>

(6)浏覽器通路

<a href="http://s3.51cto.com/wyfs02/M02/59/AD/wKiom1TbEgSTf3FkAADYdYP4iXE356.jpg" target="_blank"></a>

方式二:修改方式一(隻需修改第五步,其它一樣)

<code>[root@localhost webproject]</code><code># cat www/views.py</code>

<code>from django.shortcuts </code><code>import</code> <code>render_to_response</code>

<code>    </code><code>return</code> <code>render_to_response(</code><code>'index.html'</code><code>,{})</code>

<code></code>

     本文轉自zys467754239 51CTO部落格,原文連結:http://blog.51cto.com/467754239/1613612,如需轉載請自行聯系原作者