django框架簡介

-------------------MVC與MVT框架-------------------
一、MVC
MVC框架的核心思想是:解耦。下降各功能模塊之間的耦合性,方便未來變化時,更容易重構代碼,最大程度上實現代碼的重用。m表示model,重要用於對數據層的封裝;v表示view,用於向用戶展現結果;c表示controller,是核心,用於處理請求、獲取數據、返回結果。
二、MVT
Django是一款分層框架,用於使用python進行web開發,與MVC所不一樣,屬於MVT框架。m表示model,負責與數據庫交互,v表示view,是核心,負責接收請求、獲取數據、返回結果;t表示template,負責呈現內容到流程器。html

-------------------環境搭建-------------------
一、Linux下建立虛擬環境
一、mkvirtualenv [虛擬環境名稱]:建立
二、rmvirtualenv [虛擬環境名稱]:刪除
三、workon:查看當前虛擬環境list
四、workon [虛擬環境名稱]:進入對應的虛擬環境
五、deactivate:退出
六、全部的虛擬環境都位於/home/.virtualenvs目錄下
七、pip list/pip freeze:查看當前虛擬環境中所安裝的包python

二、安裝django
一、建議安裝1.8.2版本:
二、安裝指令:
pip install django==1.8.2
三、查看安裝版本
import django
django.get_version()mysql

三、建立項目
一、建立指令:
django-admin startproject [項目名稱]
二、目錄中文件的說明web

四、目錄說明
一、manage.py:一個命令行工具,可使你用多種方式對django項目進行交換
二、內置的目錄:項目的真正的python包
三、init.py:一個空文件,它告訴python這個目錄應該被看作一個python包
四、setting.py:項目的配置
五、urls.py:項目的URL聲明
六、wsgi.py:項目與WSGI兼容的web服務器入口正則表達式

-------------------定義模型-------------------
一、數據庫配置
一、在setting.py文件中,經過DATABASES項進行數據庫設置。
二、django支持的數據庫包括:sqlite、mysql等主流數據庫。
三、Django默認使用SQLite數據庫。sql

二、建立應用
一、建立應用的命令
python manage.py startapp [應用的名稱]。shell

二、定義模型類
一、有一個數據表,就有一個模型類與之對應。
二、打開models.py文件,定義模型類。
三、引入包from django.db import models。
四、模型類繼承自models.Model類。
五、說明:不須要定義主鍵列,在生成時會自動添加,而且值爲自增加。
六、當輸出對象時,會調用對象的str方法。數據庫

三、生成數據表
一、激活模型:
編輯setting.py文件,將[引用的名稱]加入到installed_apps中
二、生成遷移文件:
python manage.py makemigrations
三、遷移文件被生成到migrations目錄中
四、執行遷移:
python manage.py migratedjango

四、測試數據操做
一、進入python shell 中:
python manage.py shell
二、引入對應的包
一、from [應用的名稱].models import [模塊的名稱]
二、from django.utils import timezone
三、from datetime import *
三、對應的測試指令
一、[模塊的名稱].objects.all():數據的查詢
二、[模塊的名稱].objects.get(pk=1):指定主鍵條件進行查詢
三、model = [模塊的名稱]():建立一個對象
四、model.save():進程對應數據向數據庫的存儲
五、model.delete():刪除這條數據
六、model.heroinfo_set.all():獲取到指定對象所關聯的HeroInfo表中的信息瀏覽器

-------------------使用後臺進行數據庫的管理-------------------
一、服務器
一、開啓服務器指令
python manage.py runserver

二、服務器默認端口8000,修改服務器端口爲8080
python manage.py runserver 8080

三、注意
一、修改文件不須要重啓服務器,增長、刪除文件須要重啓服務器
二、ctrl+c中止服務器

二、管理操做
一、使用django的管理:
一、建立一個管理員用戶
python manage.py createsuperuser
二、瀏覽器鏈接後臺:
經過127.0.0.1:8000/admin;進行對後臺管理界面的訪問。
三、進入管理站點,默承認以對group、users進行管理

二、管理界面本地化:
一、編輯settings.py文件,設置編碼、時區
二、編碼:
LANGUAGE_CODE = 'zh-Hans'
三、時區:
TIME_ZONE = 'Asia/Shanghai'

三、向admin註冊[應用的名稱]的模型
一、from django.contrib import admin
二、from models import BootInfo:引用模塊中的對應數據表包
三、admin.site.register(BookInfo):進行指定數據的註冊操做

四、自定義管理界面
class QuestionAdmin(admin.ModelAdmin):
list_display = ['pk','btitle','bpub_date']
admin.site.register(Question,QuestionAdmin)

二、列表頁屬性:
一、list_display:顯示字段,能夠點擊列頭進行排序
list_display = ['pk','btitle','bpub_date']
二、list_filter:過濾字段,過濾框會出如今右側
list_filter = ['btitle']
三、search_fields:搜索字段,搜索框會出如今上側
search_fields = ['bible']
四、list_per_page:分頁,分頁框會出如今下側
list_per_page = 10
三、添加、修改也屬性
一、field:屬性的前後順序
field = ['bpub_date','btitle']
二、fieldsets:屬性分組
fieldsets = [
('basic',{'fields':['btitle']}),
('more',{'fields':['bpub_date']})
]

五、關聯對象
from django.contrib import admin
from models import BookInfo,HeroInfo
class HeroInfoline(admin.StackedInline/admin.TabularInline):
model = HeroInfo
extra = 2

class BookInfoAdmin(admin.ModelAdmin):
inlines = [HeroInfoInline]

admin.site.register(BookInfo,BookInfoAdmin)

六、布爾值的顯示
def sex():
if self.hsex:
return '男'
else :
return '女'
sex.short_description = '性別'

class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['id','hname','sex','hcontent']

-------------------視圖-------------------
一、設置views.py
from django import HttpResponse

def index(requset):
return HttpResponse('index')

def detail(requset):
return HttpResponse('detail')

二、配置URLconf
一、URLconf包含正則表達式和視圖兩部分
二、進行test1中url的編寫
url(r'^',include('booktest.urls'))
三、在booktest中進行urls的編寫操做
from django.conf.urls import url
from . import views
urlpatters = [
url(r'^',view.index),
url(r'^([0-9]+)/$',view.detail),
]

-------------------模板-------------------
一、模板文件夾建立
一、建立對應存放模板的文件夾
mkdir templates/booktest/index.html
二、修改setting.py文件,設置TEMPLATES的DIRS值
'DIRS':[os.path.jion(BASE_DIR,'templates')],

二、建立模板
一、在模板中訪問試圖傳遞的數據
{{輸出值,能夠是變量,也能夠是對象.屬性}}
{%執行代碼%}

三、使用模板
一、編輯views.py文件,在方法中調用模板
from django.http import HttpResponse
from django.template import RequestContext,loader
from models import BookInfo

def index(request):
booklist = BookInfo.objects.all()
template = loader.get_template('booktest/index.html')
context = RequestContext(request,{'booklist':booklist})
return HttpResponse(template.render(context))

四、去除模板的硬編碼
一、修改test1/urls.py文件,在include中設置namespace
url(r'^admin/',include(admin.site.urls,namespace='booktest')),
二、修改booktest/urls.py文件,設置name
url(r'^book/([0-9]+)/$',views.detail,name='detail')
三、修改index.html模板中的連接
<a herf ="{% url 'booktest:detail' book.id%}">

五、Render簡寫
from django.shortcuts import render
from models import BookInfo

def index(reqeust):booklist = BookInfo.objects.all()return render(reqeust,'booktest/index.html',{'booklist':booklist})

相關文章
相關標籤/搜索