databases =
}
2.在與django 專案同名的目錄下的__init__.py 檔案中寫下如下**,告訴django 使用pymysql模組連線mysql資料庫:
import pymysql
pymysql.install_as_mysqldb()
3.資料庫遷移的時候出現乙個警告
warnings:
?: (mysql.w002) mysql strict mode is not set for database connection 『default』
hint: mysql』s strict mode fixes many data integrity problems in mysql, such as data truncation upon insertion, by escalating warnings into errors. it is strongly recommended you activate it.
解決方案:
在配置中多加乙個options引數
『options』: ,
(二).model
在django中model是你資料的單
一、明確的資訊**。它包含了你儲存的資料的重要欄位和行為。通常,乙個模型(model)
對映到乙個資料庫表。
基本情況:
每個模型都是乙個python類,它是django.db.models.model的子類,
模型的每個屬性都代表乙個資料庫欄位.
django為您提供了乙個自動生成的資料庫訪問api
(三).快速入門
下面這個例子定義了乙個 person 模型,包含 first_name 和 last_name。
from django.db import models
class person(models.model):
first_name = models.charfield(max_length=30)
last_name = models.charfield(max_length=30)
first_name 和 last_name 是模型的字段。每個欄位被指定為乙個類屬性,每個屬性對映到乙個資料庫列.
上面的 person 模型將會像這樣建立乙個資料庫表.
「id」 serial not null primary key,
「first_name」 varchar(30) not null,
「last_name」 varchar(30) not null
);
class userinfo(models.model):
nid = models.autofield(primary_key=true)
username = models.charfield(max_length=32)
class meta:
db_table = 「table_name」
2.id欄位是自動新增的,如果你想要指定自定義主鍵,只需在其中乙個欄位中指定 primary_key=true 即可。如果django發現你已
經明確地設定了field.primary_key,它將不會新增自動id列。
(四).欄位
1.autofield
自增的整形字段,必填引數primary_key=true,則成為資料庫的主鍵。無該字段時,django自動建立。
注意:乙個model不能有兩個autofield欄位。
2.integerfield
乙個整數型別,數值的範圍是-2147483648 - 2147483647.
3.charfield
字元型別,必須提供max_length引數.max_length表示字元的長度.
4.datefield
日期型別,日期格式為yyyy-mm-dd,相當於python中的datetime.date的例項
引數:auto_now:每次修改時修改為當前日期時間
auto_now_add:新建立物件時自動新增當前日期時間。
auto_now和auto_now_add和default引數是互斥的,不能同時設定。
5.datetimefield
日期時間字段,格式為yyyy-mm-dd hh:mm[:ss[.uuuuuu]][tz],相當於python中的datetime.datetime的例項。
6.smallintegerfield(integerfield):
小整數 -32768 ~ 32767
7.positivesmallintegerfield(positiveintegerreldbtypemixin, integerfield)
protocol,用於指定ipv4或ipv6, 『both』,「ipv4」,「ipv6」
unpack_ipv4, 如果指定為true,則輸入::ffff:192.0.2.1時候,可解析為192.0.2.1,開啟此功能,需要protocol=「both」
16.urlfield(charfield)
imagefield(filefield)
floatfield(field)
binaryfield(field)
def db_type(self, connection):
限定生成資料庫表的字段型別為char,長度為max_length指定的值
return 'char(%s)' % self.max_length
使用自定義char型別字段
class class(models.model):
id = models.autofield(primary_key=true)
title = models.charfield(max_length=25)
# 使用自定義的char型別的字段
cname = mycharfield(max_length=25)
(六).欄位引數
null 資料庫中欄位是否可以為空
db_column 資料庫中字段的列名
default 資料庫中字段的預設值
primary_key 資料庫中欄位是否為主鍵
db_index 資料庫中欄位是否可以建立索引
unique 資料庫中欄位是否可以建立唯一索引
unique_for_date 資料庫中欄位【日期】部分是否可以建立唯一索引
unique_for_month 資料庫中欄位【月】部分是否可以建立唯一索引
unique_for_year 資料庫中欄位【年】部分是否可以建立唯一索引
verbose_name admin中顯示的欄位名稱
blank admin中是否允許使用者輸入為空
editable admin中是否可以編輯
help_text admin中該字段的提示資訊
choices admin中顯示選擇框的內容,用不變動的資料放在記憶體中從而避免跨表
如:gf = models.integerfield(choices=[(0, '何穗'),(1, '大表姐'),],default=1)
error_messages 自定義錯誤資訊(字典型別),從而定製想要顯示的錯誤資訊;
(七).model meta引數
class userinfo(models.model):
nid = models.autofield(primary_key=true)
username = models.charfield(max_length=32)
class meta:
db_table = "table_name"
# admin中顯示的表名稱
verbose_name = '個人資訊'
# verbose_name加s
verbose_name_plural = '所有使用者資訊'
# 聯合索引
index_together = [
("pub_date", "deadline"), # 應為兩個存在的字段
]# 聯合唯一索引
unique_together = (("driver", "restaurant"),) # 應為兩個存在的字段
python框架之Django專案建立
目錄 1.django專案建立命令 2.django專案setting設定 1 類名設定 2 資料庫模組設定 3 其他設定 3.django資料庫連線 4.django專案利用model模組直接建立資料表 5.django專案執行命令 建立虛擬環境,切換到虛擬環境,執行以下命令 django adm...
django框架之安裝
我們安裝的是django 1.11.14 版本 我們先用pycham先裝 files選單欄下選擇setting,然後再找project下的直譯器project interpreter,然後點選右邊的加號按鈕,在搜尋框中搜尋django,選擇版本,雙擊安裝。看圖 然後再介紹用pip安裝 開啟cmd,在...
python之Django框架篇 基礎一複習
0.django安裝 pip3 install django 1.11.11 pip3 install i django 1.11.11 pycharm安裝的時候 注意不要勾選那個選項 你們懂得 1.django專案的啟動 1.命令列啟動 在專案的根目錄下 也就是有manage.py的那個目錄 執行...