最近由於要作一個小型的網站,需求很簡單有點像公司內部的管理網站,和室友一塊兒倒騰,發現了一些坑。我本身以前沒有接觸過python 可是發現真的很是好上手。css
咱們沒人會前端,因此最怕修改網頁,一開始選擇了Flask框架,我搞了半天遇到各類坑(還要修改css 麻煩),中間件也很差用,勸你們用django,資料多,很是好用。html
那麼開始說重點,須要作的哪些東西。前端
http://python.usyiyi.cn/ 是主要的資料,裏面是中文的資料建議一點點看下去。java
1-項目環境搭建。python
1.1第三方庫準備mysql
開發環境是mac os 和ubantu 推薦你們下載一個第三方的軟件叫 "Anaconda" ,安裝很是簡單,直接運行腳本就好。程序員
安裝完了,能夠到命令行運行 pip list。能夠看到已經安裝的python第三方庫 。sql
此時咱們是沒有django的庫的。數據庫
pip
install
Django
django
一句話安裝完。怎麼算成功呢?能夠直接在寫的python 裏
import
django 沒報錯就成功,數據庫咱們選擇的是mysql,django 也須要安裝算是中間件相似於java中的JDBC。
照樣一句話
pip install MySQL
-
python
怎麼成功?
就在 python 裏import _mysql 沒出錯的話,恭喜你,要裝的基本裝完了。
1.2IDE的安裝
IDE 使用eclipse,講一個工具Pydev,安裝自行百度,點點就行。
而後 到Eclipse了 New->Project->Pydev->Pydev Django Project,一路next 。發現eclipse 找不到Django 環境,回來點擊 click here to configure an interpreter 而後把python interpreter 中的名爲python的刪掉,那是系統默認的,改爲anaconda目錄 下 bin/裏面的python。默認是2.7.11吧。忘記安裝目錄?一個命令 sudo find / -name anacon* 搞定~。找到之後加進去,到了圖一這一步就結束。
(圖1)
2-數據庫配置和使用
2.1數據庫鏈接文件配置
我選了mysql,固然在這以前mysql的賬號密碼應該本身肯定了吧。mysql配置應該簡單。可是若是要支持遠程訪問,好比你把數據庫放到雲上,別人機器上,畢竟開發不是一我的的事,我本身遇到的坑是"關於 mysql 配置文件中的 bind-address",自行百度,解決方案是刪除就好。(推薦幾個mysql 鏈接的桌面軟件,用Navicat ,或者mysql workbench 都是不錯的)。(後來發現這裏輸入密碼和賬號沒什麼用仍是要去修改在與項目同名的app裏面的setting)。如今在mysql本身建立一個database 取名隨便。我叫test,其餘字段應該不用解釋瞭如圖2。
(圖2)
2.2建立APP(模塊)
而後咱們在工程里根目錄右擊->Django->Create App->輸入名字就好。由於網頁主要是MVC模式,創兩個吧。一個叫db 專用於管理數據庫(models 層) 第二個專用於後臺邏輯。名字隨便取由於可能要對應多個模塊。django裏面增長一個app 就須要在與項目同名的那個app的setting中Installed_app裏面加入app名(如圖4)。咱們加入之後目錄結構(如圖3.)
(圖3)
(圖4)
2.3用django模型層建表
數據庫正式開發,數據庫建立,在db的models.py中 對應數據庫中每一個表寫class,就是定義好字段,由於Django的目標是要程序員徹底脫離數據庫的操做。那麼咱們先不建表,cd 到你的工程目錄去,用命令行 用打入 manage.py migrate 命令。效果如圖5。
(圖5)
若是你的配置是沒錯的,此時django 已經在你的數據庫中建了不少表,都是django自帶的,我也沒有用起來,惟一用的是django自帶的數據庫管理界面,相似於Navicat,還支持搜索功能,本身去文檔裏 http://python.usyiyi.cn/django_182/intro/tutorial02.html 學吧。
而後在db的models裏寫一個表的代碼。而後效果如圖6 仍是用了Manage 腳本。
from __future__ import unicode_literals from django.db import models # Create your db here. class Message(models.Model): user_id = models.BigIntegerField(blank=True, null=True)
(圖6)
到這裏表都結束了,實際開發中,我數據庫都是先建好的,那我所有都要寫每一個類是否是很麻煩,有沒有偷懶的辦法呢?
答案是用./manage.py inspectdb
用了就知道,他會反向生成表的代碼, 而後直接複製進models裏面就行了。
3-url 解析
3.1url匹配處理函數
在Django中 通常url解析分爲兩層。
第一層負責解析APP的名,像我在test 裏urls.py裏寫的(如圖7)。第一個參數表示響應的url,第二個參數表示處理的模塊。
(圖7)
第二層是解析到具體的模塊中的某個函數來響應對應的url。
好比在view app 中的urls.py(須要本身建立) 寫的(圖8)url(函數中第一個參數爲匹配路徑,後一個是對應函數名)裏面的home對應view app中的views.py 裏的函數home
(圖9)
3.2靜態網頁配置
其實到這個時候已經能夠實現響應了。(到這裏還要解決一個問題 'Index/home.html')在哪裏呢?咱們此時創一個文件夾叫templates html都應該放在這裏,Index 是一個模塊的名字。你能夠在templates下面建不少個文件夾,對應不少的APP模塊。(html就不屬於本文範疇了)此時目錄結構爲
(圖10)
搞定了後別忘記在test的setting 里加上一句代碼
(圖11)
"就是DIRS"裏面.想一想也是,否則 Django怎麼知道咱們的html放在這裏呢。
4-邏輯層(也就是最後一步了,怎麼樣把數據庫的東西查出來,放到html中。)
4.1數據庫中的數據
往表裏插兩條數據
(圖12)
4.2動態顯示數據
看下代碼:html部分
(圖13)
裏面的{%%}是django 自帶標籤的本身看文檔學一下就會。
(圖14)
裏面的Message.objects.all() 表示從Message表中取出全部數據。還有什麼複雜查詢本身看文檔,通常都是filter exclude,django 還支持sql語句直接寫,函數名叫raw().
context就是返回給頁面的一個對象裏面放了不少值。在python裏叫字典(dict)
4.3啓動服務器
最後咱們用命令行來到咱們的目錄,敲./manage.py runserver (要支持全部端口 和外網訪問加0.0.0.0)。而後出現
(圖15)
4.4查看網頁
再到瀏覽器敲127.0.0.1:8000 django默認端口 (圖16)
4.5實際開發中問題
結果出來了。遇到具體問題就是查一些文檔和stackoverflow。發現一個時區問題,建議和我改爲同樣。把test裏面setting中的時區部分改爲這樣。不然你會有八個小時的時差,
(圖17)
。還有啥問題能夠和我討論的能夠留言。小弟也是剛作完這個項目從零開始。碼字不易~小問題就不在這裏說了。