1. 程式人生 > >python下搭建最簡單的django框架例項

python下搭建最簡單的django框架例項

寫慣了java程式碼,最近想著學門新的語言玩玩,恰好有朋友是學python,於是也想著學學python玩下,python裡有個web框架django,這兩天也試了一下
發現也挺不錯的,把自己搭建django的經歷分享下,給新手們一個參考,哈哈


執行環境
Windows 7(64位) + Python 2.7 + Django 1.7.1
1.安裝django框架
當然你首先要有python環境,對於學python的朋友們這個就不多說了~~
我使用的是setuptools工具來安裝的,setuptools是python中安裝第三方模組常用的安裝工具
1.1安裝setuptools工具(如果會安裝的可以直接跳過)
先從這個地址下載ez_setup.py:
https://pypi.python.org/pypi/setuptools#windows(在頁面最下面)
我下載的是setuptools-7.0.zip,將其解壓,將解壓的setuptools-7.0檔案放到一個目錄,我這裡假定將其放到C:\workspace目錄下
開啟命令列cmd,在cmd中切換到C:\workspace\setuptools-7.0,即setuptools-7.0安裝目錄
執行命令:
python ez_setup.py
該命令會安裝setuptools工具,安裝後開啟你的python安裝目錄下的Scripts目錄(我的是C:\Python27\Scripts),會看到easy_install.exe等檔案
注意將python安裝目錄下的Scripts目錄(我的是C:\Python27\Scripts)新增到環境變數path,否則下面的easy_install命令會報錯
1.2安裝django框架
在cmd中輸入:
easy_install django
有的安裝過程可能會提示缺少vc++包,根據提示網址(我忘了~)下載包,我下載的是VCForPython27.msi,安裝vc++後再執行安裝
這樣就自動安裝了django,是不是很方便,哈哈


2.建立django專案,這裡假定在c:\workspace\djangoTest下建立(和java有點差別,java是直接建立專案就可以了,python是要先建立專案再在專案裡建立app)
進入c:\workspace\djangoTest目錄,輸入:
django-admin startproject mytodo       #網上很多是python django-admin.py startproject mytodo,版本不一樣可能命令有細微差別
就建立了mytodo專案


3.啟動除錯伺服器
進入c:\workspace\djangoTest\djangoTest\mytodo目錄:
cd mytodo
然後輸入:
python manage.py runserver
在瀏覽器中輸入http://127.0.0.1:8000/,看能否訪問頁面


4.建立app
輸入命令:python manage.py startapp todo
就在mytodo專案下建立了一個app,即todo
編輯mytodo/settings.py檔案,在INSTALLED_APPS新增條目todo
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'todo',
)
即在最後新增一行todo(有的版本是專案名+app名,即mytodo.todo)
再次輸入:python manage.py runserver看看你app是否配置好了,養成邊寫邊測試的好習慣,哈哈~


5.配置資料庫
django預設的是使用SQLite資料庫作為後臺資料庫,仍然開啟mytodo/settings.py,可以看到下面一段:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
這就是django專案的資料庫配置,預設是使用SQLite,我們就使用使用預設配置,安裝SQLite資料庫,不需要修改配置檔案
聽到又要安裝資料庫,大家肯定又覺得好複雜,其實在python裡安裝三方模組,資料庫什麼的很簡單,一條命令就可以搞定了~~
輸入命令:
easy_install pysqlite
這樣就安裝了SQLite資料庫
安裝完資料庫,我們也測試一下,輸入命令:
python manage.py syncdb
出現successfully提示就安裝成功了,開啟mytodo目錄,看看裡面是否有一個db.sqlite3檔案,這就是上面配置的資料庫檔案
說到這裡,提示一下我們的命令都是在cmd命令列中輸入的,不是在python互動式環境python shell裡面輸入的,大家注意了~~


上面都是配置各種環境,下面就是正式的編寫程式碼(當然也有配置),寫之前先說明一下,django裡面也是MVC模式,只是和java裡面的
不太一樣,MVC裡面的C(即controller)在django裡面不叫controller,而是view,這點需要大家注意,另外django實現了ORM框架,我們不需要自己寫操
作資料庫的程式碼,呼叫django提供的Model層的方法就可以了
我們的流程也很簡單,就是使用者輸入一個地址,提交到控制器view的index方法,index方法呼叫模型層Model處理,得到結果,再跳轉到index頁面顯示結果
就是一個最簡單的流程,大家應該都瞭解吧,哈哈~~


6.配置Model層
在todo/models.py檔案中新增類TodoEntry:
class TodoEntry(models.Model):
     task = models.CharField(max_length=120)
     status = models.IntegerField()
     create_date = models.DateTimeField('create date')


     def __unicode__(self):
          return self.task

然後執行以下命令:
python manage.py makemigrations todo  #(命令前面要加python,有的版本不用加python)
該命令會在todo/migrations目錄下生成提交指令碼,開啟todo/migrations目錄,看看是否有一個0001_initial.py的檔案,就是剛剛生成的
python manage.py sqlmigrate todo 0001   #該命令可以檢視剛剛的指令碼的sql語句,可以不執行
python manage.py migrate 
該命令會正真操作資料庫,即在資料庫中生成了對應的表


7.配置view層(controller)
編輯todo/views.py檔案,實現index函式:
# 'todo.views.index' 

def index(request):
    all_todo_list = TodoEntry.objects.all().order_by('-create_date')


    return render_to_response('todo/index.html', {'all_todo_list' : all_todo_list}, context_instance = RequestContext(request))
    
該函式意思是將TodoEntry表中的記錄全部取出來顯示到todo/index.html頁面,在函式中用到了TodoEntry類,還用到了兩個變數render_to_response,RequestContext
所以這裡我們要匯入對應的變數,在todo/views.py檔案開頭加入以下程式碼,匯入模組變數
from models import TodoEntry
from django.shortcuts import render_to_response,RequestContext


8.配置url
編輯mytodo/url.py 中的 urlpatterns,新增以下配置:
url(r'^todo/$', 'todo.views.index')
該配置的意思是當在瀏覽器中輸入http://127.0.0.1:8000/todo時(即APP根目錄時),將跳到view層(即views.py)中的index函式處理


9.配置模板
首先在todo目錄下新建一個頁面index.html,輸入以下程式碼:
{% if all_todo_list %}
    {% for entry in all_todo_list %}
        <p> {{ entry.task }}
             <a href="/todo/del/{{ entry.id }}/"> delete </a>
        </p>
    {% endfor %}
{% else %}
    <p>No todo entry are available.</p>
{% endif %}

然後編輯mytodo/settings.py 檔案,新增以下配置:
TEMPLATE_DIRS = [os.path.join(BASE_DIR],即todo目錄下的頁面都會被渲染

大家也可以在todo下新建一個templates目錄,將index.html放到templates目錄下,那就如下配置:
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
意思是在todo/templates(根目錄即是todo)目錄中的頁面都會被渲染


10.測試
開啟瀏覽器,在位址列輸入:http://127.0.0.1:8000/todo,如果頁面正常,就說明成功了

在自己搭建django環境時,參考了某位大牛的部落格http://www.cnblogs.com/weichsel/archive/2012/10/15/2724108.html,大牛的部落格更加精煉
大家也可以直接按照大牛的部落格來操作~~