1. 程式人生 > >號稱簡明實用的Django上手教程

號稱簡明實用的Django上手教程

1 幾個基本概念 

 前置條件:假設讀者基本Python語言基礎,或者具備某種程式語言的基礎。你還熟悉web開發環境,懂些css,js,db等。

Django是什麼?

Django是一個開放原始碼的Web應用框架,由Python寫成。採用了MVC的軟體設計模式,即模型M,檢視V和控制器C。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的。並於2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。 Django的主要目標是使得開發複雜的、資料庫驅動的網站變得簡單。Django注重元件的重用性和“可插拔性”,敏捷開發和DRY法則(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置檔案和資料模型。

-----維基百科

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

----百度百科

MTV開發模式?

Django是一個基於MVC構造的框架。但是在Django中,控制器接受使用者輸入的部分由框架自行處理,所以 Django 裡更關注的是模型(Model)、模板(Template)和檢視(Views),稱為 MTV模式。它們各自的職責如下:

(1) 模型(Model),即資料存取層 處理與資料相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及資料之間的關係等。

(2) 檢視(View),即表現層 處理與表現相關的決定: 如何在頁面或其他型別文件中進行顯示。

(3) 模板(Template),即業務邏輯層 存取模型及調取恰當模板的相關邏輯。模型與模板的橋樑。

Django的架構?

讓我們一覽 Django 全貌:

urls.py 網址入口,關聯到對應的views.py中的一個函式(或者generic類),訪問網址就對應一個函式。

views.py 處理使用者發出的請求,從urls.py中對應過來, 通過渲染templates中的網頁可以將顯示內容,比如登陸後的使用者名稱,使用者請求的資料,輸出到網頁。

models.py 與資料庫操作相關,存入或讀取資料時用到這個,當然用不到資料庫的時候 你可以不使用。

forms.py 表單,使用者在瀏覽器上輸入資料提交,對資料的驗證工作以及輸入框的生成等工作,當然你也可以不使用。

templates 資料夾 views.py 中的函式渲染templates中的Html模板,得到動態內容的網頁,當然可以用快取來提高速度。

admin.py 後臺,可以用很少量的程式碼就擁有一個強大的後臺。

settings.py Django 的設定,配置檔案,比如 DEBUG 的開關,靜態檔案的位置等。

上面的py檔案不理解也沒有關係,後面會詳細介紹。一圖勝千言,架構全貌工作機制如下所示:

Django大家都在使用的商業網站

Sohu 郵箱  、果殼網  、 豆瓣  、 愛調研 、 易度線上雲辦公 、 優容網  、 快玩遊戲、九九房、貸幫網 、 趣奇網 、知乎、時尚時空 、遊嘻板: YxPad webpy、DNSPod 國際版 、下廚房  、 貝太廚房 、 Wopus問答 、 咕咚網 、扇貝網 、站長工具、易度文件管理系統、個人租房、 線上文件檢視-易度雲檢視 、 FIFA310 足球資料分析專家、 搜狐隨身看等等。

2 Django配置準備

 前置條件:pip、python、sublime、anaconda環境已經安裝。

後置條件:

pip install django

檢查是否安裝成功:

xxx資料統計分析(決策)平臺

系統環境:WIN10 64bit
開發環境:sublime+Anaconda
資料庫:Mysql 5.6.17
語言:python3.5
框架:django1.11+Bootstrap
視覺化工具:Highchart|Echarts|plotly|Bokeh(採用Echarts)

3 Django基礎配置安裝

 1 建立專案,專案決策分析:xmjc_analysis

在E盤根目錄下建立xmjc_analysis:

django-admin startproject xmjc_analysis

效果:

settings.py 專案的設定檔案
urls.py 總的urls配置檔案
wsgi.py 部署伺服器檔案
__init__.py python包的目錄結構必須的,與呼叫有關。

2 建立App名為analysis

django-admin startapp analysis

效果:

3 新定義的app加到settings.py中的INSTALL_APPS中

4 檢視和網址建立第一個頁面

(1)我們在analysis這個目錄中,把views.py開啟,修改其中的原始碼:

'''
第一個頁面
author:白寧超
site:http://www.cnblogs.com/baiboy/
'''
#coding:utf-8
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
    return HttpResponse(u"歡迎進入第一個Django頁面!")

第一行是宣告編碼為utf-8, 因為我們在程式碼中用到了中文,如果不宣告就報錯.

第二行引入HttpResponse,它是用來向網頁返回內容的,就像Python中的 print 一樣,只不過 HttpResponse 是把內容顯示到網頁上。

我們定義了一個index()函式,第一個引數必須是 request,與網頁發來的請求有關,request 變數裡面包含get或post的內容。

(2)我們開啟 xmjc_analysis/xmjc_analysis/urls.py 這個檔案, 修改其中的程式碼:

from django.conf.urls import url
from django.contrib import admin

from analysis import views as analysis_views

urlpatterns = [
    url(r'^admin/', admin.site.urls),

    url(r'^index/$', analysis_views.index,name='index'),# 首頁
]

(3)本地執行伺服器測試

注意在專案根目錄xmjc_analysis執行結果如下:

(4)頁面傳引數,顯示歡迎‘admin’字樣

修改view.py原始碼:

通過get方式接受頁面引數,當然也可以採用post,結合form實現。效果如下

5 配置簡單資料庫操作,預設sqlite,咱們指定mysql資料庫

(1)在xmjc_analysis/settings.py檔案下修改如下:

'''
配置Mysql資料庫
2017年7月26日16:40:38
白寧超
'''
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'test',
        'PASSWORD': 'test123',
        'HOST':'localhost',
        'PORT':'3306',
    },
}

xmjc_analysis/__init__.py下修改:

import pymysql
pymysql.install_as_MySQLdb()

(2)在analysis/models.py下設計資料庫表,採用ORM方式

from django.db import models

# Create your models here.
class User(models.Model):
    username = models.CharField('使用者名稱', max_length=30)
    userpass = models.CharField('密碼',max_length=30)
    useremail = models.EmailField('郵箱',max_length=30)
    usertype = models.CharField('使用者型別',max_length=30)

    def __str__(self):
        return self.username

(3) 在analysis/admin.py中定義顯示資料

from django.contrib import admin
from .models import User

class UserAdmin(admin.ModelAdmin):
    list_display = ('username','userpass','useremail') # 自定義顯示欄位

admin.site.register(User,UserAdmin)

(4)建立更改的檔案,將生成的py檔案應用到資料庫

python manage.py makemigrations
python manage.py migrate

(5)建立超級管理員:使用者名稱,test;密碼密碼:test123456

python manage.py createsuperuser

(6)登入後臺檢視資訊

執行伺服器:python manage.py runserver

 

可以看到後臺資訊,並對資料表進行增刪改查操作,但是後臺全部英文,可以改為中文顯示?

後臺管理設定為中文顯示,xmjc_analysis/settings.py下修改程式碼:

LANGUAGE_CODE = 'zh-Hans' # 中文顯示

再去檢視:

(7) Django 提供的 QuerySet API,shell玩轉MySql

在xmjc_analysis下輸入【 python manage.py shell】,然後查詢資料表。

建立一條使用者資訊:

User.objects.create(username="李白", userpass="libai123",useremail="[email protected]",usertype="超級管理員")

後臺檢視:

其他操作方式:

# 方法 1
User.objects.create(username="李白", userpass="libai123",useremail="[email protected]",usertype="超級管理員")
# 方法 2
twz =User(username="李白", userpass="libai123",useremail="[email protected]",usertype="超級管理員")
twz.save()
# 獲取物件:
Person.objects.all()
# 滿足條件查詢
User.objects.filter(username="李白")
# 迭代查詢:
es = Entry.objects.all()
for e in es:
    print(e.headline)
# 查詢排序:
User.objects.all().order_by('username')
# 鏈式查詢:
User.objects.filter(name__contains="WeizhongTu").filter(email="[email protected]")
# 去重查詢:
qs = qs.distinct()
# 刪除操作:
User.objects.all().delete()
# 更新操作:
Person.objects.filter(name__contains="abc").update(name='xxx')
資料的匯出:
python manage.py dumpdata [appname] > appname_data.json
python manage.py dumpdata blog > blog_dump.json
匯出使用者資料
python manage.py dumpdata auth > auth.json # 匯出使用者資料

(8)批量向資料表匯入資料

將name.txt匯入資料庫:

資料匯入原始碼:

#!/usr/bin/env python
#coding:utf-8
#


from django.core import serializers
import json
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xmjc_analysis.settings")


'''
Django 版本大於等於1.7的時候,需要加上下面兩句
import django
django.setup()
否則會丟擲錯誤 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
'''

import django
import json
if django.VERSION >= (1, 7):#自動判斷版本
    django.setup()


def main():
    from analysis.models import User
    f = open('./readme/files/name.txt',encoding='utf-8')
    for line in f:
        name,pwd,email,type = line.split('|')
        User.objects.create(username=name,userpass=pwd,useremail=email,usertype=type)
    f.close()

def jsondb():
    from analysis.models import User
    data = eval(serializers.serialize("json", User.objects.all())) # json
    userdata = json.dumps(data)
    print(type(userdata))


if __name__ == "__main__":
    main()
    # jsondb()
    print('插入完畢!')

檢視結果:

相關推薦

【秒懂】號稱最為簡明實用Django上手教程

作者:白寧超 2017年8月24日09:37:35 摘要:Django的學習教程也是分門別類,形式不一。或是較為體系的官方文件,或者風格自由的部落格文件,或者偏向例項的解析文件。即使官方文件,章節較多,文字闡述累贅,有時候我們只是關注某個功能用法而已,而自由博文最大的問題是互相抄襲,結構混亂,涵蓋面小

【秒懂】號稱最為簡明實用Django上手教程(下)

作者:白寧超 2017年8月25日08:51:58 摘要:上文號稱【最為簡明實用的Django上手教程】介紹了django基本概念、配置和相關操作。相信通過上文的閱讀,基本明白django執行機制和操作。假設你現在通過dome和相關書籍已經基本理解django這臺機器的執行。下一步如何像asp.net

號稱簡明實用Django上手教程

1 幾個基本概念   前置條件:假設讀者基本Python語言基礎,或者具備某種程式語言的基礎。你還熟悉web開發環境,懂些css,js,db等。 Django是什麼? Django是一個開放原始碼的Web應用框架,由Python寫成。採用了MVC的軟體設計模式,即模型M,檢視V和控制器C。它最初是被

技術文章 | 號稱簡明實用Django上手教程

本文來源於阿里雲-雲棲社群,原文點選這裡。  前置條件:假設讀者基本Python語言基礎,或者具備某種程式語言的基礎。你還熟悉web開發環境,懂些css,js,db等。 Django是一個開放原始碼的Web應用框架,由Python寫成。採用了MVC的軟體設計模

DOXYGEN簡明實用教程

程式碼寫多了難免需要做文件,給自己還是給別人看都需要如此,這次XBOX360製作,前期沒怎麼寫註釋,回頭改Bug都要猜半天自己寫的程式碼是什麼意思。更別提別人寫的東西,100行程式碼也沒有一句註釋,幸好不是我維護,否則要瘋掉了。花了一天功夫嘗試了一下Doxygen的使用,還好不難,但是有些磕磕絆絆,它自己的文

二十二、Rational rose 簡明實用教程

1.工具下載與破解–>連結:https://pan.baidu.com/s/1WxrLPBlknutFFflSVwZ89A 密碼:k15j 2.簡明實用教程:https://blog.csdn.net/gz153016/article/details/49641847 3.瞭解

轉載:簡明實用的CUDA入門教程

Sample code in adding 2 numbers with a GPUTerminology: Host (a CPU and host memory), device (a GPU and device memory).This sample code adds 2 numbers toget

Caffe 深度學習框架上手教程

att per share caff 但是 fill ... post 高效 Caffe 深度學習框架上手教程 blink 15年1月 Caffe (CNN, deep learning) 介紹 Caffe -----------Convo

Django文字教程

pytho dict 分系統 current 靜態 for mysite 管理 nag 如下如下: 1.創建Django工程 Django-admin startproject 工程名 mysite settings.py---主配置文件 u

vultr 購買 vps 快速上手教程

span server -i 右上角 neu 價格 直接 ges -c 註冊登錄vultr官網地址進入vultr官網,右上角有登錄和註冊,點擊註冊直接輸入想要註冊的賬號密碼就可以購買因為是要先支付,進去後就是支付頁面,支持支付寶支付Alipay 阿裏支付,也就是支付寶。支付

Django學習教程

bsp htm href http 緩存 分發系統 發送 學習教程 djang 第一:Django路由匹配分發系統 第二:Django緩存系統 第三:Django發送郵件 第四:Django配置Django學習教程

DHCP服務器搭建 企業實用 小白教程

sta dhcp服務器 int server fault p地址 配置 廣播地址 efault DHCP 服務器搭建 安裝dhcp Yum -y install dhcp編輯配置文件 vim /

python快速上手教程

n) 數字類型 clas 取反 col 整數 部分 基本數據類型 -s python版本 python目前的版本分為2.7和3.5,兩種版本的代碼目前無法兼容,查看python版本號: python --version 基本數據類型 數字類型 整型和浮點型

mpvue上手教程

div 微信小程序開發 升級 小程序開發 詳細 tar 輸出結果 ima bubuko mpvue官網上面已經有了詳細的步驟,把每個步驟截圖及輸出結果做個筆記,供各位看官參考參考~ 1.全局安裝 vue-cli $ npm install --global vue-cli

移動端web開發除錯工具——Vorlon.JS上手教程

問題提出: 在移動端頁面的日常開發中常常會碰到這樣一個問題,頁面在Chrome的Device模式下顯示正常,但在移動端瀏覽器或者內嵌到APP裡就會出現樣式問題或者Js程式碼問題,但是移動端上沒有類似Chrome的開發者除錯工具,只能通過嘗試修改,重複釋出版本來檢查問題,或者寫一大堆a

聯盛德WIFI模組 山景語音Codec 智慧音箱開發板、智慧語音玩具開發板 上手教程(一)

新板子除錯步驟 接線如圖: 連線JLINK,開啟板子, 開啟keil工程:e:\work\智慧硬體\軟硬體\聯盛德-wifi模組\音訊AP8048c\MVs18_01_07\Examples\SpiFlash\SpiFlashExample.uvproj 之後點

Django入門教程(四)模板的查詢順序與渲染及過濾器的使用

模板的渲染:檢視函式在返回response的時候,返回的是一個html檔案,並且會傳遞一些資料給html,最終將這些資料展示在頁面上。 Django中提供了一個templates資料夾,用於存放所有的html檔案。 templates資料夾的建立位置: 1、在專案根目錄下建立:這

Django入門教程(六)模板繼承和靜態資源的使用

第一部分 模板的繼承 1、模板繼承 對於一個網站來說,會存在很多的html檔案,但是由於一些頁面中會有相同的頁面結構出現。也就導致了多個html檔案中程式碼是重複的,所以為了在html中減少重複的程式碼的出現,簡化html結構,可以將多個頁面中相同的html程式碼,單獨的抽離出來放在一個ht

微信小程式小遊戲開發文件,小遊戲快速上手教程

微信小遊戲快速上手教程 檔案結構 小遊戲只有以下兩個必要檔案: game.js 小遊戲主程式入口 game.json 配置檔案 執行環境 小遊戲的執行環境跟小程式類似,執行在 JavaScriptCore 中,

django系列教程15:資料庫遷移

目錄 1.遷移 1.生成遷移檔案 2.執行遷移命令 新增測試資料 1.遷移 建立完模型類後,並沒有真正的在資料庫中建立了資料表,需要執行遷移命令,在資料表中建立資料表。 1.生成遷移檔案 manage.py 檔案所在目錄執行命令 python manag