日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django—入门

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django—入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

索引

        1.搭建環境

      2.創建項目

      3.設計模型

      4.管理站點

      5.視圖及URL

      6.模板

?

軟件框架

問題1:什么是軟件框架?

舉個簡單的例子,對于一個公司來說,公司中有各個職能部門,每個部門各司其職,通過部門之間的配合來完成工作,這些部門就形成了一個公司的組織架構。從某種意義上來說,公司就是一種框架。那么對應到軟件設計上來說,軟件框架是由其中的各個模塊組成的,每個模塊負責特定的功能,模塊與模塊之間相互協作來完成軟件開發。

一個公司,它是針對某一市場而成立的,而軟件框架的設計,也是針對某一類軟件問題而設計的,其目的主要是提高軟件開發效率。

MVC簡介

MVC的全拼為Model-View-Controller,最早由TrygveReenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程序語言Smalltalk發明的一種軟件設計模式,是為了將傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化用戶交互模型中而設計的。隨著標準輸入輸出設備的出現,開發人員只需要將精力集中在業務邏輯的分析與實現上。后來被推薦為Oracle旗下Sun公司Java EE平臺的設計模式,并且受到越來越多的使用ColdFusion和PHP的開發者的歡迎。現在雖然不再使用原來的分工方式,但是這種分工的思想被沿用下來,廣泛應用于軟件工程中,是一種典型并且應用廣泛的軟件架構模式。后來,MVC的思想被應用在了Web開發方面,被稱為Web MVC框架。

MVC框架的核心思想是:解耦,讓不同的代碼塊之間降低耦合,增強代碼的可擴展性和可移植性,實現向后兼容。

當前主流的開發語言如Java、PHP、Python中都有MVC框架。

Web MVC各部分的功能

M全拼為Model,主要封裝對數據庫層的訪問,對數據庫中的數據進行增、刪、改、查操作。

V全拼為View,用于封裝結果,生成頁面展示的html內容。

C全拼為Controller,用于接收請求,處理業務邏輯,與Model和View交互,返回結果。

Django簡介

Django,發音為[`d???ɡ??],是用python語言寫的開源web開發框架,并遵循MVC設計。勞倫斯出版集團為了開發以新聞內容為主的網站,而開發出來了這個框架,于2005年7月在BSD許可證下發布。這個名稱來源于比利時的爵士音樂家DjangoReinhardt,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。由于Django在近年來的迅速發展,應用越來越廣泛,被著名IT開發雜志SDTimes評選為2013SDTimes100,位列"API、庫和框架"分類第6位,被認為是該領域的佼佼者。Django的主要目的是簡便、快速的開發數據庫驅動的網站。它強調代碼復用,多個組件可以很方便的以"插件"形式服務于整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展性。它還強調快速開發和DRY(DoNotRepeatYourself)原則。

  點擊查看django官方網站
  點擊查看django源碼

Django框架遵循MVC設計,并且有一個專有名詞:MVT

MVT各部分的功能

M全拼為Model,與MVC中的M功能相同,負責和數據庫交互,進行數據處理。

V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。

T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。

  • 差異就在于黑線黑箭頭標識出來的部分

?

Django1.11文檔? ?https://docs.djangoproject.com/en/1.11/

?

1.搭建環境

安裝Django包(我用的1.11.11)

?

2.創建項目

創建圖書管理項目

?

上去

3.設計模型

模型設計

我們之前操作數據庫是通過寫sql語句,那么能不能不寫sql語句就可以操作數據庫呢? 可以,就是通過接下來要給大家講的ORM框架。

ORM框架

O是object,也就類對象的意思,R是relation,翻譯成中文是關系,也就是關系數據庫中數據表的意思,M是mapping,是映射的意思。在ORM框架中,它幫我們把類和數據表進行了一個映射,可以讓我們通過類和類對象就能操作它所對應的表格中的數據。ORM框架還有一個功能,它可以根據我們設計的類自動幫我們生成數據庫中的表格,省去了我們自己建表的過程。

django中內嵌了ORM框架,不需要直接面向數據庫編程,而是定義模型類,通過模型類和對象完成數據表的增刪改查操作。

使用django進行數據庫開發的步驟如下:

  • 1.在models.py中定義模型類

  • 2.遷移

  • 3.通過類和對象完成數據增刪改查操作

下面我們以保存圖書信息為例來給大家介紹Django中進行數據庫開發的整個流程。

1.定義模型類

模型類定義在models.py文件中,繼承自models.Model類。

  說明:不需要定義主鍵列,在生成時會自動添加,并且值為自動增長。

設計圖書類

圖書類:

  • 類名:BookInfo

  • 圖書名稱:btitle

  • 圖書發布日期:bpub_date

模型類的設計

根據設計,在models.py中定義模型類如下:

from django.db import modelsclass BookInfo(models.Model):btitle = models.CharField(max_length=20)bpub_date = models.DateField()

2.遷移

遷移前目錄結構如下圖:

遷移由兩步完成:

  • 1.生成遷移文件:根據模型類生成創建表的遷移文件。
  • 2.執行遷移:根據第一步生成的遷移文件在數據庫中創建表。

生成遷移文件命令如下:

python manage.py makemigrations

執行生成遷移文件命令后,會在應用booktest目錄下的migrations目錄中生成遷移文件。

生成遷移文件后的目錄結構:?

打開上圖中的遷移文件,內容如下:?

Django框架根據我們設計的模型類生成了遷移文件,在遷移文件中我們可以看到fields列表中每一個元素跟BookInfo類屬性名以及屬性的類型是一致的。同時我們發現多了一個id項,這一項是Django框架幫我們自動生成的,在創建表的時候id就會作為對應表的主鍵列,并且主鍵列自動增長。

執行遷移命令如下:

python manage.py migrate

當執行遷移命令后,Django框架會讀取遷移文件自動幫我們在數據庫中生成對應的表格。

默認生成的表名稱

我們上面生成的表的名字叫做booktest_bookinfo,booktest是應用的名字,bookinfo是模型類的名字。

數據表的默認名稱為:

<app_name>_<model_name> 例: booktest_bookinfo

設計英雄類

英雄類:

  • 類名:HeroInfo

  • 英雄姓名:hname

  • 英雄性別:hgender

  • 英雄簡介:hcomment

  • 英雄所屬圖書:hbook

  • 圖書-英雄的關系為一對多

打開booktest/models.py,定義英雄類代碼如下:

class HeroInfo(models.Model):hname = models.CharField(max_length=20)hgender = models.BooleanField()hcomment = models.CharField(max_length=100)hbook = models.ForeignKey('BookInfo')

這里要說明的是,BookInfo類和HeroInfo類之間具有一對多的關系,這個一對多的關系應該定義在多的那個類,也就是HeroInfo類中。

hbook = models.ForeignKey('BookInfo')這句代碼就讓BookInfo類和HeroInfo類之間建立了一對多的關系。

在我們之后遷移生成表的時候,Django框架就會自動幫我們在圖書表和英雄表之間建立一個外鍵關系。

最后我們可以看到數據庫中生成的英雄表如下圖:

注意上圖中booktest_heroinfo表中有一列hbook_id,這一列名為什么不叫hbook? hbook_id是根據HeroInfo類的關系屬性hbook生成的,對應著圖書表中的主鍵id。

?

上去

4.管理站點

使用Django的管理模塊,需要按照如下步驟操作:

  • 1.管理界面本地化
  • 2.創建管理員
  • 3.注冊模型類
  • 4.自定義管理頁面

1.管理界面本地化

本地化是將顯示的語言、時間等使用本地的習慣,這里的本地化就是進行中國化,中國大陸地區使用簡體中文,時區使用亞洲/上海時區,注意這里不使用北京時區表示。

打開settings.py文件,找到語言編碼、時區的設置項,將內容改為如下:

LANGUAGE_CODE = 'zh-hans' #使用中國語言 TIME_ZONE = 'Asia/Shanghai' #使用中國上海時間

2.創建管理員

創建管理員的命令如下,按提示輸入用戶名、郵箱、密碼。

python manage.py createsuperuser

打開瀏覽器,在地址欄中輸入如下地址后回車。

http://127.0.0.1:8000/admin/

如果啟動時出這樣的錯誤,修改端口。

輸入前面創建的用戶名、密碼完成登錄。

登錄成功后界面如下,但是并沒有圖書、英雄的管理入口,接下來進行第三步操作。

?

3.注冊模型類

登錄后臺管理后,默認沒有我們創建的應用中定義的模型類,需要在自己應用中的admin.py文件中注冊,才可以在后臺管理中看到,并進行增刪改查操作。

打開booktest/admin.py文件,編寫如下代碼:

from django.contrib import admin from booktest.models import BookInfo,HeroInfoadmin.site.register(BookInfo) admin.site.register(HeroInfo)

到瀏覽器中刷新頁面,可以看到模型類BookInfo和HeroInfo的管理了。

點擊類名稱"BookInfo"可以進入列表頁。

在列表頁中點擊"增加"可以進入增加頁,Django會根據模型類的不同,生成不同的表單控件,按提示填寫表單內容后點擊"保存",完成數據創建,創建成功后返回列表頁。

在列表頁中點擊某行的第一列可以進入修改頁。

?

按照提示進行內容的修改,修改成功后進入列表頁。在修改頁點擊“刪除”可以刪除一項。

刪除:在列表頁勾選想要刪除的復選框,可以刪除多項。

?

點擊執行后進入確認頁面,刪除后回來列表頁面。

4.自定義管理頁面

在列表頁只顯示出了BookInfo object,對象的其它屬性并沒有列出來,查看非常不方便。 Django提供了自定義管理頁面的功能,比如列表頁要顯示哪些值。

打開booktest/admin.py文件,自定義類,繼承自admin.ModelAdmin類。

  • 屬性list_display表示要顯示哪些屬性

class BookInfoAdmin(admin.ModelAdmin):list_display = ['id', 'btitle', 'bpub_date']

?

  • 修改模型類BookInfo的注冊代碼如下

admin.site.register(BookInfo, BookInfoAdmin)
  • 刷新BookInfo的列表頁,所有屬性都顯示出來了

  • 最終booktest/admin.py文件代碼如下

from django.contrib import admin from booktest.models import BookInfo,HeroInfoclass BookInfoAdmin(admin.ModelAdmin):list_display = ['id', 'btitle', 'bpub_date'] class HeroInfoAdmin(admin.ModelAdmin):list_display = ['id', 'hname','hgender','hcomment']admin.site.register(BookInfo,BookInfoAdmin) admin.site.register(HeroInfo,HeroInfoAdmin)

?

上去

5.視圖及URL

視圖

對于django的設計框架MVT,用戶在URL中請求的是視圖,視圖接收請求后進行處理,并將處理的結果返回給請求者。

使用視圖時需要進行兩步操作:

* 1.定義視圖函數 * 2.配置URLconf

1.定義視圖

視圖就是一個Python函數,被定義在views.py中。

視圖的必須有一個參數,一般叫request,視圖必須返回HttpResponse對象,HttpResponse中的參數內容會顯示在瀏覽器的頁面上。

打開booktest/views.py文件,定義視圖index如下

from django.http import HttpResponsedef index(request):return HttpResponse("index")

2.配置URLconf

查找視圖的過程

請求者在瀏覽器地址欄中輸入url,請求到網站后,獲取url信息,然后與編寫好的URLconf逐條匹配,如果匹配成功則調用對應的視圖函數,如果所有的URLconf都沒有匹配成功,則返回404錯誤。

一條URLconf包括url規則、視圖兩部分:

  • url規則使用正則表達式定義。

  • 視圖就是在views.py中定義的視圖函數。

需要兩步完成URLconf配置:

  • 1.在應用中定義URLconf

  • 2.包含到項目的URLconf中

在booktest/應用下創建urls.py文件,定義代碼如下:

from django.conf.urls import url from booktest import views urlpatterns = [url(r'^index$', views.index), ]

包含到項目中:打開項目的urls.py文件,為urlpatterns列表增加項如下:

url(r'^book/', include('booktest.urls')),

項目/urls.py文件完整代碼如下:

from django.conf.urls import include, url from django.contrib import adminurlpatterns = [url(r'^admin/', include(admin.site.urls)),url(r'^book/', include('booktest.urls')), ]

?

也可以直接在項目的urls.py里面直接寫路由,不用在app的url里寫。之后會寫反向解析,這里先不寫了:

from django.conf.urls import url from django.contrib import admin from booktest.views import *urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^index/$', index), ]

請求訪問

視圖和URLconf都定義好了,接下來在瀏覽器地址欄中輸入網址:

http://127.0.0.1:8000/book/index

網頁顯示效果如下圖,視圖被成功執行了。

上去

6.模板

如何向請求者返回一個漂亮的頁面呢?

肯定需要用到html、css,如果想要更炫的效果還要加入js,問題來了,這么一堆字段串全都寫到視圖中,作為HttpResponse()的參數嗎?這樣定義就太麻煩了吧,因為定義字符串是不會出任何效果和錯誤的,如果有一個專門定義前端頁面的地方就好了。

解決問題的技術來了:模板。

在Django中,將前端的內容定義在模板中,然后再把模板交給視圖調用,各種漂亮、炫酷的效果就出現了。

創建模板

為應用booktest下的視圖index創建模板index.html,目錄結構如下圖:

可以直接在templates下創建index.html文件。

設置查找模板的路徑:打開項目的settings.py文件,設置TEMPLATES的DIRS值

'DIRS': [os.path.join(BASE_DIR, 'templates')],

定義模板

打開templtes/booktest/index.html文件,定義<body>里面的代碼如下:

<h1>{{ title }}</h1> {% for li in list %}<li>{{ li }}</li> {% endfor %}

在模板中輸出變量語法如下,變量可能是從視圖中傳遞過來的,也可能是在模板中定義的。

{{變量名}}

在模板中編寫代碼段語法如下:

{%代碼段%}

視圖調用模板

視圖調用模板render。,方法render包含3個參數:

  • 第一個參數為request對象
  • 第二個參數為模板文件路徑
  • 第三個參數為字典,表示向模板中傳遞的上下文數據

打開booktst/views.py文件,調用render的代碼如下:

from django.shortcuts import renderdef index(request):context={'title':'圖書列表','list':range(10)}return render(request,'booktest/index.html',context)

頁面效果:

?

轉載于:https://www.cnblogs.com/ForT/p/10710269.html

總結

以上是生活随笔為你收集整理的Django—入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一二三四区 | 女人性做爰100部免费 | 中文字幕2区 | 国产传媒一区二区 | 色秀视频网 | 俄罗斯videodesxo极品 | 中文av网| 欧美v日本 | 国产精品中文字幕在线观看 | 中文字幕一区二区三区不卡 | 国产免费视频一区二区三区 | 亚洲啪av永久无码精品放毛片 | 五月婷婷中文字幕 | 亚洲天堂激情 | 亚洲美女中文字幕 | 国产女人被狂躁到高潮小说 | 麻豆www | 免费播放黄色片 | 男女啪啪毛片 | 免费在线观看黄色 | 欧美精品乱码视频一二专区 | 豆花视频成人 | 欧美亚洲视频在线观看 | 麻豆国产精品视频 | 久热网| 99精品在线观看 | 色五丁香 | 国产第一页屁屁影院 | 999在线视频 | 免费的av| 色婷婷小说 | 国产嗷嗷叫 | 国产一区二区毛片 | 毛茸茸多毛bbb毛多视频 | 中文字幕高清 | 久久久久99精品成人片三人毛片 | 国产网站在线免费观看 | av一起看香蕉 | 日本特黄色片 | 深夜福利在线免费观看 | 日韩中文字幕一区二区三区四区 | 亚洲精品视频二区 | 宇都宫紫苑在线播放 | 毛片毛片| 日本不卡一区二区三区视频 | 中文在线不卡视频 | 蜜桃成人在线 | 78m78成人免费网站 | 国产三级按摩推拿按摩 | 亚洲av无码乱码国产精品 | 琪琪射 | 久久亚洲精华国产精华液 | 欧美中文字幕一区二区 | 欧美黄片一区二区三区 | 97视频成人 | 亚洲欧美bt | 日韩av黄色片 | a天堂在线资源 | 国产黄色免费观看 | 亚欧毛片 | 女优在线观看 | 性生交生活片1 | 日韩av一区二区三区 | 午夜裸体性播放 | 欧洲亚洲国产精品 | 亚洲成人黄色在线 | 欧美视频网站 | 九热这里只有精品 | 光棍影院手机版在线观看免费 | 少妇高潮久久久久久潘金莲 | 国产午夜福利精品 | 国产亚洲精品aaaaaaa片 | 双女主黄文| 国产主播精品 | 午夜免费影院 | 欧美综合另类 | 日韩人妻无码一区二区三区 | 中文字幕在线观看亚洲 | 丁香婷婷久久久综合精品国产 | 黑丝啪啪 | 欧美性爱精品一区 | 美女乱淫 | 一区二区精彩视频 | 国内视频精品 | 国产成人视屏 | 黄色在线一区 | 就去吻综合 | 亚洲黄色小视频 | 欧美久久激情 | 国产丝袜一区二区三区 | 免费精品在线观看 | 欧美日韩午夜爽爽 | 波多野结衣视频免费 | 国内精品国产三级国产aⅴ久 | 国产在线播 | 青青草草 | 桃色网站在线观看 | 一区二区免费在线观看 | 美女精品在线 |