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:通過yum的方式安裝pip  # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  # sed -i 's/^#//' /etc/yum.repos.d/epel.repo  # sed -i 's/mirrorlist/#mirrorlist/' /etc/yum.repos.d/epel.repo  # yum -y install python-pip    方式2:通過源碼編譯安裝pip  # wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz  # tar xf setuptools-1.4.2.tar.gz   # cd setuptools-1.4.2  # python setup.py install   # easy_install --version  # cd ../  # wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz  # tar xf pip-1.4.1.tar.gz   # cd pip-1.4.1  # python setup.py install

(3)pip的基本使用

安裝特定版本的package,通過使用==, >=, <=, >, <來指定一個版本號。  pip安裝django,並指定安裝的版本  # pip install 'django==1.6.5'    pip卸載django  # pip uninstall django    pip查詢包  # pip search 'django'    pip升級包  # pip install -U 'django'    列出pip安裝的包  # pip freeze

三、安裝Django

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

(1)通過pip工具安裝django

# pip install 'django==1.6.5'

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

# tar xf Django-1.6.10.tar.gz   # cd Django-1.6.10  # python setup.py install

(3)導入django模塊並查看版本號,如果沒有錯誤輸出,說明django安裝是成功的

[root@localhost ~]# python -c 'import django;print (django.get_version())'  1.6.10

四、Django創建項目和應用

(1)創建一個項目

[root@localhost ~]# django-admin.py startproject webproject  [root@localhost ~]# tree ./  ./  └── webproject		#外層目錄只是你項目的一個容器,可以任意重命名      ├── manage.py    #一個實用的命令行工具,可讓你以各種方式與該 Django 項目進行交互      └── webproject	#目錄是你項目中的實際 Python 包。該目錄名就是 Python 包名,通過它你可以導入它裏面的任何東西          ├── __init__.py	#一個空文件,告訴 Python 該目錄是一個 Python 包          ├── settings.py	#該 Django 項目的設置/配置          ├── urls.py	    #該 Django 項目的 URL 聲明; 一份由 Django 驅動的網站「目錄」          └── wsgi.py		#一個 WSGI 兼容的 Web 服務器的入口,以便運行你的項目    2 directories, 5 files

(2)創建應用程序

[root@localhost ~]# cd webproject/  [root@localhost webproject]# django-admin.py startapp blog  [root@localhost webproject]# tree .  .  ├── blog  │   ├── admin.py  │   ├── __init__.py  │   ├── models.py  │   ├── tests.py  │   └── views.py  ├── manage.py  └── webproject      ├── __init__.py      ├── settings.py      ├── urls.py      └── wsgi.py

(3)修改django配置文件

#需要修改三處位置  [root@localhost ~]# vim webproject/settings.py  INSTALLED_APPS = (      'django.contrib.admin',      'django.contrib.auth',      'django.contrib.contenttypes',      'django.contrib.sessions',      'django.contrib.messages',      'django.contrib.staticfiles',      'blog',		#第一處添加blog應用  )    LANGUAGE_CODE = 'zh-cn'		#第二處修改為中文    TIME_ZONE = 'Asia/Shanghai'		#第三處修改時區

(4)配置url訪問路徑

[root@localhost ~]# vim webproject/urls.py  urlpatterns = patterns('',      # Examples:      # url(r'^$', 'webproject.views.home', name='home'),      # url(r'^blog/', include('blog.urls')),        url(r'^admin/', include(admin.site.urls)),      url(r'^blog$','blog.views.index'),		#添加一行  	#正則匹配,僅訪問到^blog目錄就重定向到blog.views中的index方法,所以在views.py裏面應該定義好index函數/方法  )

(5)創建視圖

[root@localhost webproject]# vim blog/views.py  from django.shortcuts import render  from django.http import HttpResponse    # Create your views here.    def index(req):      return HttpResponse('<h1>hello django!!!</h>')

(6)運行django服務

[root@localhost webproject]# python manage.py runserver 0.0.0.0:80  Validating models...    0 errors found  February 11, 2015 - 11:58:44  Django version 1.6.10, using settings 'webproject.settings'  Starting development server at http://0.0.0.0:80/  Quit the server with CONTROL-C.  [11/Feb/2015 11:59:23] "GET / HTTP/1.1" 404 2003  [11/Feb/2015 11:59:28] "GET /blo HTTP/1.1" 404 2012  [11/Feb/2015 11:59:30] "GET /blog HTTP/1.1" 200 23

五、瀏覽器訪問

六、模板層(template)

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

from django.http import HttpRespomse  def index(req):  	return HttpRespose(<h1>hello django!!!</h1>)

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

靜態頁面

方式一:

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

模板文件放在應用程序下面templates目錄,這個目錄默認不存在需要手動創建

(1)首先查看當前所處的位置和整體項目的目錄文件結構

[root@localhost webproject]# pwd  /root/webproject  [root@localhost webproject]# tree .  .  ├── blog		#應用  │?? ├── admin.py  │?? ├── admin.pyc  │?? ├── __init__.py  │?? ├── __init__.pyc  │?? ├── models.py  │?? ├── models.pyc  │?? ├── tests.py  │?? ├── views.py  │?? └── views.pyc  ├── manage.py  └── webproject	#項目      ├── __init__.py      ├── __init__.pyc      ├── settings.py      ├── settings.pyc      ├── urls.py      ├── urls.pyc      ├── wsgi.py      └── wsgi.pyc    2 directories, 18 files

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

[root@localhost webproject]# django-admin.py startapp www  [root@localhost webproject]# ls  blog  manage.py  webproject  www

(3)更新項目配置文件,發佈新應用並設置url

[root@localhost webproject]# vim webproject/settings.py  INSTALLED_APPS = (      'django.contrib.admin',      'django.contrib.auth',      'django.contrib.contenttypes',      'django.contrib.sessions',      'django.contrib.messages',      'django.contrib.staticfiles',      'blog',      'www',		#添加新行  )    [root@localhost webproject]# vim webproject/urls.py  urlpatterns = patterns('',      # Examples:      # url(r'^$', 'webproject.views.home', name='home'),      # url(r'^blog/', include('blog.urls')),        url(r'^admin/', include(admin.site.urls)),      url(r'^blog$','blog.views.index'),      url(r'^www$','www.views.index'),	#添加新行  )

(4)創建模板目錄並生成html文件

[root@localhost webproject]# mkdir www/templates  [root@localhost webproject]# cat www/templates/index.html   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.allentuns.com/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>My Django Page</title>  </head>  <body>     <h1>Hello Django!!!</h1>  </body>  </html>

(5)修改應用的視圖文件views

[root@localhost webproject]# vim www/views.py   from django.shortcuts import render  from django.template import loader,Context	#導入django的兩個對象loader和Context  from django.http import HttpResponse    # Create your views here.    def index(req):      t = loader.get_template('index.html')	#導入模板文件www/templates/index.html      c = Context({})			#創建Context對象,用於存放提供給模板的數據(用於動態網頁)      return HttpResponse(t.render(c))

(6)瀏覽器訪問

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

[root@localhost webproject]# cat www/views.py  from django.shortcuts import render  from django.shortcuts import render_to_response    # Create your views here.    def index(req):      return render_to_response('index.html',{})