建立 django 子應用
新生成的檔案有:
migrations 目錄用於存放資料庫遷移歷史檔案
models.py 使用者儲存資料庫模型類
tests.py 用於開發測試用例,編寫單元測試
views.py 用於編寫web應用檢視
1、直接新增 'book'
----------分界線----------
什麼是 orm ?
有點像 json ,orm 自己的語法可以對接 mysql, orcale, sqlite等不同的資料庫
orm db
類 資料庫
物件 資料行
屬性 字段
在 models.py 裡定義乙個類,需要繼承自 (models.model)
django系統會自動為我們新增乙個主鍵 – id
字段:欄位名=model.型別(選項)
欄位名其實就是資料表的欄位名
欄位名不要使用 python, mysql 等關鍵字
在資料庫裡:
char (m)
varchar (m)
m 就是選項
在 orm 裡,是這樣的:
models.charfield(max_length=10)
現在,資料庫裡沒有資料表,需要模型遷移(建表)
1、生產遷移檔案:根據模型類生成建立表的語句
python manage.py makemigrations
2、執行遷移:根據第一步生成的語句在資料庫中建立表
python manage.py migrate
[ 如何讓外網訪問到本地的django專案呢? (必須用谷歌瀏覽器)]
settings.py 裡面的allowed_host= [『預設是127.0.0.1(也可以指定其他,比如虛擬機器的本機ip,192.168.1.125)』]
那麼,當外網(真實主機)輸入 192.168.1.125 的時候,就能訪問到 這個 django 專案了,而你的本機就像雲伺服器那樣可以提供服務
[ 當你的虛擬機器比較卡時,可以用真實主機的谷歌瀏覽器檢視網頁效果 ]
進入django的admin管理站點,要想顯示中文,就修改settings.py裡面的
language_code = 'zh-hans』
改時區:
time = 'asia/shanghai』
使用者名稱和密碼? 終端新建乙個超級使用者:
python3 manage.py createsuperuser
username: abc
email:[email protected]
password:abc
找到admin.py這個檔案,新增幾句話:
from django.contrib import admin
# register your models here.
from book.models import bookinfo, peopleinfo
# finished, restart django
admin.site.register(bookinfo)
admin.site.register(peopleinfo)
重啟 django 以後,重新整理谷歌瀏覽器,就可以看到 bookinfo 和 peopleinfo 這兩張資料表了
在 bookinfo 新增資料後發現顯示 bookinfo object (1), 而不是真實的名稱
這時候需要去 models.py 那裡重寫 str 方法:
class bookinfo(models.model):
name = models.charfield(max_length=10)
def __str__(self):
return self.name
[ 路由分發 ]
為了管理多個子應用的url,所以在各自子應用裡面建立 urls.py 檔案,
把所有該子應用相關的 url 統一在乙個地方管理
from django.contrib import admin
from django.urls import path, include
# from book import views
urlpatterns =
[ path(
'admin/', admin.site.urls),
# path('index/', views.index)
path(
'', include(
'book.urls'
))]
[ 如果上面那個path旁邊空的引號裡面寫了東西blog,那麼訪問網頁時,需要:127.0.0.1/blog/index, 不能直接訪問 index]
templates 設定
mkdir templates
cd templates
mkdir book
cd book
touch index.html
如何讓django系統知道,要去templates資料夾裡找html網頁呢?
去 settings.py 裡面,參考 databases 設定,複製,到 上面 templates 那裡設定:
'dirs'
:[os.path.join(base_dir, 'templates'
)]
總是用終端跳轉,太麻煩了,而pycharm也太龐大,在虛擬機器上執行很卡,所以,安裝 notepad++吧。
sudo add-apt-repository ppa:notepadqq-team/notepadqq
sudo
apt-get update
sudo
apt-get
install notepadqq
後來發現,win7的notepad++可以操作專案,但是linux這個只能寫檔案,所以,需要解除安裝:
sudo
apt-get remove notepadqq
sudo add-apt-repository --remove ppa:notepadqq-team/notepadqq
安裝 vs code 吧,好像被牆了。sublime也是。算了,還是到真實主機裡寫好,再複製貼上會虛擬機器操作吧。
總結:
1、models.py 設計表
2、admin.py 註冊模型類,然後建立乙個超級管理員
4、views.py 裡面 def *** (request)
... 設計乙個網頁連線
5、urls.py 裡面新增 *** 的網頁路徑
6、templates 資料夾裡新增 html 檔案
學習記錄2
pv操作同步過程 對訊號燈狀態進行改變,p呼叫一次 1,v呼叫一次 1。p操作 p s 是乙個原語操作,p操作執行 s 若s為負數,呼叫p s 的程序被阻塞,放到等待佇列q中。p s v操作 v s 剛好與p s 操作相反,v操作執行 s 若s為大於0,繼續執行 s 0,從訊號燈等待佇列移出乙個程序...
學習記錄2
1 如果電腦螢幕顯示異常 安裝360顯示卡驅動 3 win10虛擬機器未聯網,橋接模式沒有作用,勾選nta模式,用於共享主機的ip位址並重新啟動電腦 4 安裝cad如果安裝不成功,安裝路徑資料夾名稱可以修改為英文 5 虛擬機器安裝win10非常卡,將虛擬機器執行記憶體調大,由1gb調整為4gb 6 ...
mysql學習記錄 MySQL學習記錄 2
in 子查詢 select from student where id in 1,2 not in 不在其中 select from student where id not in 1,2 is null 是空 select from student where age is null is not...