Django¶
Django¶
官网:https://www.djangoproject.com/
文档:https://docs.djangoproject.com/zh-hans/4.0/
安装Django¶
(python37) PS C:\Users\Qingyuan_Qu> pip install django
(python37) PS C:\Users\Qingyuan_Qu> python -m django --version
Django Admin¶
(python37) PS C:\Users\Qingyuan_Qu> django-admin.exe
startproject # 创建Project
runserver # 启动项目
startapp # 创建App
# 可以将迁移看作是数据库架构的版本控制系统。
showmigrations # 迁移:列出项目的迁移和迁移的状态
makemigrations # 迁移:基于模型的修改创建迁移文件
migrate # 迁移: 负责应用和撤销迁移
sqlmigrate # 迁移:展示迁移使用的 SQL 语句
squashmigrations
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
sendtestemail
shell
sqlflush
sqlsequencereset
test
testserver
https://docs.djangoproject.com/zh-hans/4.0/topics/migrations/
manage.py 会在每个 Django 项目中自动创建。它做的事情和 django-admin 一样,但也设置了 DJANGO_SETTINGS_MODULE 环境变量,使其指向你的项目的 settings.py 文件。
创建项目¶
创建应用¶
(python37) PS D:\PycharmProjects\pythonProject> cd .\smartlibrary\
(python37) PS D:\PycharmProjects\pythonProject\smartlibrary> python .\manage.py startapp authorize
(python37) PS D:\PycharmProjects\pythonProject\smartlibrary> python .\manage.py startapp home
将App添加到Project¶
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'authorize.apps.AuthorizeConfig',
'home.apps.HomeConfig'
]
添加模型¶
App home¶
class book(models.Model):
name = models.CharField(max_length=50, blank=False, verbose_name="书名", default='')
price = models.FloatField(blank=False, verbose_name="价格", default=0)
cover = models.ImageField(verbose_name="封面", upload_to='upload', default='img/default.png')
introduction = models.TextField(verbose_name="介绍", blank=True, default='')
url = models.URLField(verbose_name='URL', blank=True, default='')
publish = models.CharField(verbose_name='出版社', max_length=50, default='', blank=True)
rating = models.CharField(verbose_name='评分', max_length=5, default='0')
def __str__(self):
return self.name
class Meta:
verbose_name = "图书管理"
verbose_name_plural = "图书管理"
class hits(models.Model):
userid=models.IntegerField(default=0)
bookid=models.IntegerField(default=0)
hitnum=models.IntegerField(default=0)
def __str__(self):
return str(self.userid)
class Meta:
verbose_name = "点击量"
verbose_name_plural = "点击量"
在admin.py中注册模型
from django.contrib import admin
from .models import book
from .models import hits
admin.site.register(book)
admin.site.register(hits)
App authorize¶
class user(models.Model):
name = models.CharField(max_length=50, default='')
email = models.EmailField()
password = models.CharField(max_length=6, default='admin')
def __str__(self):
return self.name
class Meta:
verbose_name = '用户管理'
verbose_name_plural = '用户管理'
在admin.py中注册模型
模型的迁移¶
# 基于模型的修改创建迁移
PS D:\smartlibrary> python .\manage.py makemigrations home
PS D:\smartlibrary> python .\manage.py makemigrations authorize
# 展示迁移的SQL
PS D:\smartlibrary> python .\manage.py sqlmigrate home 0001
PS D:\smartlibrary> python .\manage.py sqlmigrate authorize 0001
# 创建数据库和表
PS D:\smartlibrary> python .\manage.py migrate
# SQLite3
PS D:\smartlibrary> sqlite3.exe .\db.sqlite3
.help
.databases
.tables
.quit