柚子快報激活碼778899分享:Django核心
柚子快報激活碼778899分享:Django核心
安裝django
pip install django
# pip install django==3.1.6
創(chuàng)建django項目
在一個項目中可以包含多個應(yīng)用程序。
django-admin startapp app_name #創(chuàng)建一個應(yīng)用程序
django-admin startproject project_name #創(chuàng)建一個項目
運行django項目
python manage.py runserver 8000
MTV模式
Models:數(shù)據(jù)庫管理員(非必須) Templates:模板引擎(非必須) Views:接口引擎 瀏覽器輸入地址——> urls.py ——> view ——> model ——> 數(shù)據(jù)庫 ——> views ——> templates ——> response(字節(jié)碼bytes)——> 瀏覽器
請求與響應(yīng)
request ——> urls(path) response ——> views(HttpResponse, TemplateResponse, JsonResponse )
路由分層
就是 urls.py 之間規(guī)則 …
數(shù)據(jù)庫遷移命令
python manage.py makemigrations
python manage.py migrate
這兩個命令是 Django 中用于數(shù)據(jù)庫遷移的命令。
python manage.py makemigrations 命令用于生成數(shù)據(jù)庫遷移文件。遷移文件是 Django 中的一種特殊文件,它記錄了對模型的更改,例如創(chuàng)建新表、添加字段、修改字段等。通過運行該命令,Django會檢測您對模型的更改,并生成相應(yīng)的遷移文件,以便在數(shù)據(jù)庫中應(yīng)用這些更改。
python manage.py migrate 命令用于將數(shù)據(jù)庫遷移應(yīng)用到實際的數(shù)據(jù)庫中。在運行該命令時,Django會查找尚未應(yīng)用的遷移文件,并將其應(yīng)用到數(shù)據(jù)庫中,以確保數(shù)據(jù)庫結(jié)構(gòu)與模型定義保持同步。
通常情況下,當(dāng)您對模型進行更改后,需要運行 makemigrations 命令生成遷移文件,然后再運行 migrate 命令將這些更改應(yīng)用到數(shù)據(jù)庫中。這樣可以保持?jǐn)?shù)據(jù)庫的一致性,并確保模型的更改在數(shù)據(jù)庫中得到正確地反映。
需要注意的是,執(zhí)行遷移操作前,請確保您已正確配置了數(shù)據(jù)庫連接信息,并且數(shù)據(jù)庫已正確創(chuàng)建。此外,如果您的模型有關(guān)聯(lián)關(guān)系(如外鍵、多對多關(guān)系等),Django 還會自動生成相應(yīng)的遷移文件來處理這些關(guān)聯(lián)關(guān)系。
模板語言進階
Django 的模板語言是一種簡單而強大的模板系統(tǒng),用于在 Django 的視圖中生成動態(tài)的 HTML、XML、JSON 等內(nèi)容。以下是 Django 模板語言的主要特點和語法:
插值:使用雙大括號({{}})將變量插入到模板中,例如 {{ variable }}。過濾器:可以使用過濾器對變量進行處理和轉(zhuǎn)換,例如 {{ variable|filter }}。過濾器可以通過管道(|)進行串聯(lián)。標(biāo)簽:使用單大括號和百分號({% %})包圍的內(nèi)容,用于執(zhí)行控制邏輯、循環(huán)、條件判斷等操作。例如 {% if condition %} … {% endif %}。注釋:使用 {# #} 包圍的內(nèi)容,用于添加注釋,這些注釋在渲染模板時會被忽略。循環(huán):使用 {% for item in list %} … {% endfor %} 進行循環(huán)迭代,可以遍歷列表、字典等可迭代對象。條件判斷:使用 {% if condition %} … {% elif condition %} … {% else %} … {% endif %} 進行條件判斷。繼承和塊:可以使用 {% extends ‘base.html’ %} 定義模板繼承關(guān)系,并使用 {% block content %} … {% endblock %} 在父模板中定義可替換的塊。URL 反向解析:使用 {% url ‘view-name’ arg1 arg2 %} 可以根據(jù)視圖名稱和參數(shù)生成相應(yīng)的 URL。靜態(tài)文件:使用 {% static ‘path/to/file’ %} 可以生成靜態(tài)文件的 URL。
Django 模板語言提供了豐富的功能和語法,可以使模板與視圖邏輯相分離,提高代碼的可維護性和重用性。它允許在模板中動態(tài)地插入變量、執(zhí)行控制邏輯和循環(huán),使開發(fā)人員能夠輕松地生成動態(tài)的內(nèi)容和交互式的用戶界面。
Model 之 Instance 與 QuerySet
數(shù)據(jù)庫 倉庫 Model 倉庫設(shè)計圖 Field:CharField、IntegerField、FloatFiled、DateTimeField、ForeignKey、OneToOneField、ManyToManyField… Field參數(shù):max_length、choices、default、null、blank… Instance 貨物 常用方法:save()、get()、delete()… QuerySet(查詢集) 包裹(可以有0-N個Instance) 類似列表的對象(可索引,切片,in(instance in queryset)) 常用方法:filter()、get()、all()、delete()、update()、create()、bulk_create()、order_by()… 舉個例子: Model的定義: class Person(models.Model):
GENDER_CHOICES = (
(1, '男'),
(0, '女')
)
name = models.CharField(max_length=255)
age = models.PositiveIntegerField()
gender = models.BooleanField(choices=GENDER_CHOICES) # item.gender 顯示的是 True 或者 False, item.get_gender_display 顯示的是 男 或者 女
id_card = models.CharField(max_length=18)
address = models.CharField(max_length=255)
temperature = models.FloatField()
'''
class Meta可以用于指定一些與模型類相關(guān)的配置選項,例如數(shù)據(jù)庫表名、排序方式、權(quán)限等。
'''
class Meta:
permissions = ()
QuerySet 和 Instance 的操作(可以通過 python manage.py shell 方便的測試) from second_app.models import Person
p = Person(name="張三", age=20, gender=1, id_card="123123123123333333", address='成都市成華區(qū)', temperature=38.5) # 得到的是一個 instance
p.save()
ps = Person.objects.fileter() # 返回的一個 QuerySet
ps.count()
p = Person.objects.get(id=1) # 返回的是一個 instance
p.age = 30
p.refresh_from_db()
p.age = 30
p.save()
p.refresh_from_db()
ps = Person.objects.filter(id=1) # 返回的一個 QuerySet
ps.update(age=22)
ps[0]
ps[0].age
ps.delete()
ps = Person.objects.filter()
Django命令行
python manage.py shell
python manage.py shell 是 Django 提供的專用命令行工具,用于與 Django 項目進行交互,可以方便地訪問項目資源、進行數(shù)據(jù)庫操作和快速開發(fā)調(diào)試。而默認的 Python Shell 只是 Python 解釋器的交互式環(huán)境,沒有加載 Django 項目的配置和上下文,無法直接訪問項目中的資源和數(shù)據(jù)庫。
Django 環(huán)境加載:python manage.py shell 在啟動時會加載 Django 項目的配置和應(yīng)用,確保在交互式環(huán)境中可以直接訪問項目中定義的模型、視圖、管理器等。 方便的數(shù)據(jù)庫訪問:python manage.py shell 會自動為你配置好數(shù)據(jù)庫連接,可以直接通過模型類進行數(shù)據(jù)庫操作,而不需要手動設(shè)置數(shù)據(jù)庫連接。 項目上下文加載:python manage.py shell 會加載項目的上下文,包括項目的設(shè)置、應(yīng)用配置等信息,使得在交互式環(huán)境中可以方便地訪問和操作項目相關(guān)的資源。 快速開發(fā)和調(diào)試:python manage.py shell 方便開發(fā)人員進行快速的代碼測試、調(diào)試和驗證,可以直接執(zhí)行和測試 Django 項目中的代碼邏輯。
Model 與 Form 與 ModelForm
Model:Model是面向數(shù)據(jù)庫的 Form:Form是面向前端的 ModelForm:與Model有關(guān),與前端也有關(guān)
前后端不分離之五大視圖
動作視圖名是否需要Model是否需要Form增CreateView是是刪DeleteView是否改UpdateView是是查ListView, DetailView是否
ListView
…
CreateView
…
DetailView
…
UpdateView
…
DeleteView
…
前后端分離之常用視圖
View
…
APIView
…
柚子快報激活碼778899分享:Django核心
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。