[Python] Django框架入门
說明:Django框架入門
當前項目環境:python3.5、django-1.11
項目名:test1
應用名:booktest
命令可簡寫為:python manager.py xxx => ./manager.py xxx?
?
準備:已經安裝python并加入環境變量
已安裝 django
?
設計框架對比(引用,可自行搜索):
1、MVC
MVC框架的核心思想是:解耦
降低各功能模塊之間的耦合性,方便變更,更容易重構代碼,最大程度上實現代碼的重用
m表示model,主要用于對數據庫的封裝
v表示view,用于向用戶展示結果
c表示controller,是核心,用戶處理請求,獲取數據,返回結果
2、MVT
Django屬于MVT框架
m表示model,負責與數據庫交互
v表示view,是核心,負責接收請求、獲取數據、返回結果
t便是template,負責呈現內容到瀏覽器
個人覺得兩種框架基本大同小異
?
?
一、開始
1、創建項目:test1
?> django-admin startproject test1??
?
2、進入test1目錄創建應用:booktest
?> python manager.py startapp booktest?
創建完成,可以看到項目下booktes目錄
?
3、啟動服務器,測試
?> python manager.py runserver [8080]?
端口號可以指定,默認8000
打開瀏覽器訪問 : 127.0.0.1:8080
?
二、創建模型:
打開booktest目錄下的 models.py文件,編輯如下 ?
1 from django.db import models 2 """ 3 models文件的作用: 4 1、根據models的定義去生成SQL語句,并創建表 5 2、創建對象,對對象進行各種操作 6 圖書-英雄的關系為一對多 7 """ 8 9 10 # 圖書表 11 class BookInfo(models.Model): 12 # 默認自動生成id 13 # 圖書名稱 14 btitle = models.CharField(max_length=20) 15 # 圖書發布時間 16 bpub_data = models.DateTimeField() 17 18 def __str__(self): 19 return self.btitle 20 21 22 23 # 英雄表 24 class HeroInfo(models.Model): 25 # 英雄姓名 26 hname = models.CharField(max_length=10) 27 # 英雄性別 28 hgender = models.BooleanField() 29 # 英雄簡介 30 hcontent = models.CharField(max_length=500) 31 # 所屬圖書 : 外鍵引用對象 32 hbook = models.ForeignKey(BookInfo)?
?
三、生成數據表
1、激活模型:編輯settings.py文件,將booktest應用加入到INSTALLED_APPS下,編輯之后如下:
1 INSTALLED_APPS = [ 2 'django.contrib.admin', 3 'django.contrib.auth', 4 'django.contrib.contenttypes', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles', 8 'booktest', # 我們添加的應用 9 ]數據庫使用默認的sqlite
?
2、生成遷移文件:根據模型類型生成sql語句
?> python manager.py makemigrations?
結果如下所示:
? ? ?
3、執行遷移:執行sql語句生成數據表
?> python manager.py migrate?
? ? ? ? ? ? ??
四、測試數據庫操作:進入django的shell進行測試
?> python manager.py shell?
1、添加記錄,并查看
? ? ? ?
?
?五、定義視圖
這里為了方便處理,在booktest應用下新建了一個urls.py文件,方便管理
1、Route配置
① 查看setting.py文件如下:
?ROOT_URLCONF = 'test1.urls'?
② 修改test1/urls.py文件如下:
1 from django.conf.urls import url, include 2 from django.contrib import admin 3 4 5 urlpatterns = [ 6 url(r'^admin/', admin.site.urls), 7 # 使用應用的urls 8 url(r'^', include('booktest.urls')) 9 ]?
③ 在booktest目錄下新建urls.py文件,編輯如下:
1 from django.conf.urls import url 2 from . import views 3 4 urlpatterns = [ 5 # 首頁的處理方法 6 url(r'^$', views.index) 7 ]?
2、修改視圖文件 booktest/views.py
1 from django.http import * 2 3 4 def index(request): 5 # 打印 字符串 6 return HttpResponse("Hello Django")?
?
3、測試視圖,結果如下
?
?六、定義模板(這里僅僅對模板進行展示,更多模板操作,可查閱官方文檔)
1、創建templates目錄,并添加文件 index.html,編輯 index.html文件:
?
?
2、?修改settings.py文件,編輯如下:
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 修改目錄?
?
? ? ?3、修改視圖文件 views.py
1 from django.shortcuts import render 2 from django.http import * 3 from django.template import RequestContext, loader 4 5 6 def index(request): 7 # # 加載模板 render() 渲染模板 8 # tmp = loader.get_template('booktest/index.html') 9 # return HttpResponse(tmp.render()) 10 return render(request, 'booktest/index.html')?
4、測試,刷新頁面
?
?
?
附錄一:使用Django提供管理站點,對數據庫進行管理
1、創建管理用戶
?> python manager.py createsuperuser?
按照要求輸入賬號、郵箱、密碼
2、打開網頁,登錄
瀏覽器訪問地址(根據自己的情況):127.0.0.1:8000/admin
進入管理站點,默認可以對groups、users進行管理,如下:
?
3、管理界面本地化(顯示為中文、修改時區)
修改配置文件settings.py 如下:
1 # LANGUAGE_CODE = 'en-us' 2 LANGUAGE_CODE = 'zh-hans' 3 4 # TIME_ZONE = 'UTC' 5 TIME_ZONE = 'Asia/Shanghai'?
語言代碼與版本有關:1.8之后使用“zh-hans”,之前是“zh-cn”
4、自定義管理界面
? ? ?Django提供了admin.ModelAdmin類,來定義模型在Admin界面顯示的方式
需要在django提供的管理站點進行管理model,則需要修改應用下的admin.py文件如下:
1 from django.contrib import admin 2 from .models import * 3 4 5 # 如果需要通過/admin進行管理,需要進行注冊 6 admin.site.register(BookInfo) 7 admin.site.register(HeroInfo)?
如果對頁面有更多的要求、顯示更多內容,則如下更改admin.py:
1 from django.contrib import admin 2 from .models import * 3 4 5 class HeroInfoInline(admin.TabularInline): 6 """ 7 關聯對象注冊 8 可以繼承的父類: 9 1-層疊顯示:admin.TabularInline 10 2-表格顯示:admin.StackedInline 11 """ 12 model = HeroInfo 13 extra = 3 14 15 16 class BookInoAdmin(admin.ModelAdmin): 17 # 1、列表頁屬性 18 # 顯示字段:可以點擊列頭進行排序 19 list_display = ['id', 'btitle', 'bpub_data'] 20 # 過濾字段:過濾框會出現在右側 21 list_filter = ['btitle'] 22 # 搜索字段:搜索框會出現在上側 23 search_fields = ['btitle'] 24 # 分頁:分頁框會出現在下側 25 list_per_page = 10 26 27 # 2、修改、添加頁屬性 28 # 屬性分組 29 fieldsets = [ 30 ('base', {'fields': ['btitle']}), 31 ('super', {'fields': ['bpub_data']}) 32 ] 33 # 關聯的對象 34 inlines = [HeroInfoInline] 35 36 37 class HeroInfoAdmin(admin.ModelAdmin): 38 # 顯示字段:可以點擊列頭進行排序 39 list_display = ['id', 'hname', 'gender', 'hcontent'] 40 41 42 # 如果需要通過/admin進行管理,需要進行注冊 43 admin.site.register(BookInfo, BookInoAdmin) 44 admin.site.register(HeroInfo, HeroInfoAdmin)?
? 下圖為列表頁面:對應上圖的BookInfoAdmin中以為 list_xxx 開頭的字段
?
下圖為修改、新增頁面:對屬性進行分組,對應上面代碼的BookInfoAdmin的 fieldsets字段
?
?
5、管理對象的注冊
修改admin.py文件如下:
?
6、布爾值顯示
? 修改models.py文件如下
?
?
? 修改models.py文件
?
?
?
?
?
轉載于:https://www.cnblogs.com/reader/p/9436243.html
總結
以上是生活随笔為你收集整理的[Python] Django框架入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 核心编程9 文件和文件的输入输出 (
- 下一篇: 你的微信二维码是唯一的吗?【微信二维码的