Django應用架構
安裝Django:
pip install django -i
http://pypi.douban.com/simple--trusted-host pypi.douban.com
建立Django項目:
django-admin startproject DjangoDemo1
檔案目錄層級說明:
manage.py:一個指令行工具,可以使我們用多種方式對Django項目進行互動
project項目目錄:
init.py:一個空檔案,它告訴python這個目錄應該被看做一個python包
setting.py:項目的配置檔案
urls.py:項目的URL聲明
wsgi.py:項目與WSGI相容的Web伺服器入口
windows安裝mysql:
下載下傳位址:
https://dev.mysql.com/downloads/mysql/跳過登入直接下載下傳
環境變量:
變量名:MYSQL_HOME
變量值:E:mysql-5.7.20-winx64
以管理者身份運作cmd
進入D:mysql-8.0.12-winx64bin
執行:mysqld --initialize-insecure --user=mysql #會生成目錄下生成data目錄
管理者運作:mysqld -install
啟動服務:
net start MySQL
連接配接:
mysql -u root -p
修改setting.py檔案:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'sunck',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306'
}
建立:app01
執行 python manage.py startapp app01
在setting中獎app01應用加入INSTALL_APPS選項中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01'
]
建立模型:model.py檔案中
class Grades(models.Model):
gname = models.CharField(max_length=20)
gdate = models.DateTimeField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
class Students(models.Model):
sname = models.CharField(max_length=20)
sgender = models.BooleanField(default=True)
sage = models.IntegerField()
scontent = models.CharField(max_length=20)
關聯外鍵
sgrade = models.ForeignKey("Grades")
生成資料表在資料庫中:
生成遷移檔案:python manage.py makemigrations #在migrations目錄下生成一個遷移檔案
執行遷移:python manage.py migrate
執行完之後去資料庫中查詢資料,發現表已經生成。
測試資料操作:
進入python shell : python manage.py shell
引入一些包:
from app01.models import Grades,Students
from django.utils import timezone
from datetime import *
查詢所有資料:
Grades.object.all()
添加資料:建立一個模型類的對象執行個體
建立對象
grade1 = Grades()
grade1.gname = "gaojianshuai"
grade1.gdate = datetime(year=2019,month=12,day=9)
grade1.ggirlnum = 3
grade1.gboynum=30
grade1.save()
grade2.gname = "linjiayin"
grade2.ggirlnum = 4
grade2.gboynum=13
grade2.gdate = datetime(year=2020,month=1,day=25)
grade2.save()
檢視某個對象:
Grades.objects.all()
Grades.objects.get(pk=1)
Grades.objects.get(pk=2)
grade2
修改某個屬性:模型對象.屬性 = 新值
grade2.ggirlnum = 555
删除資料:
模型對象.delete() grade2.delete()
啟動伺服器:
python manage.py runserver
admin站點管理:
内容釋出:負責添加、修改、删除内容
配置admin應用:在setting中的INSTALL_APPS中添加'django.contrib.admin',預設是已經添加好的
建立管理者使用者:python manage.py createsuperuser
賬号密碼:sunck 1234567890
通路:127.0.0.1:8000
127.0.0.1:8000/admin
界面漢化:
在setting檔案中修改如下
LANGUAGE_CODE = 'en-us' #修改為zh-Hans
TIME_ZONE = 'Asia/Shanghai'
管理資料表:
通過修改admin.py檔案:
from .models import Grades,Students
注冊
admin.site.register(Grades)
admin.site.register(Students)
自定義管理頁面:
清單頁
list_display = ['pk', 'gname', 'gdate', 'ggirlnum', 'gboynum']#顯示字段
list_filter = ['gname']#過濾字段
search_fields = ['gname']#搜尋字段
list_per_page = 5#分頁
添加,修改頁面
fields = [ 'gname', 'ggirlnum', 'gdate', 'gboynum', 'idDelete']#屬性的先後順序
fieldsets = #給屬性分組
注意:field與fieldset不能同時使用