django的使用
环境配置
window10
python3.7.4
django3.0.3
第一步创建项目
1.选择项目的目标位置创建文件夹
2.打开shell,cd到目标文件夹路劲
3.输入 django-admin startproject project 创建新项目名称为project
4.输入tree . /f 可以看到目录的层级
目录层级说明
D:\DJANGO\FIRST_DAY
└─projecct
│ manage.py 一种命令行的工具,可以使我们以多种方式与django交互
│
└─projecct
asgi.py 异步处理
settings.py 配置文件
urls.py 项目url文件
wsgi.py 项目于wsgi兼容的web服务器接口
__init__.py 告诉python该文件夹为包对象
第二步基本操作
设计表结构
班级表
表名 grades
字段 班级名称 gname
成立时间 gdate
女生总数 ggirlnum
男生总数 gboynum
是否删除 isDelete
表名 students
字段 姓名 sname
性别 ssex
年龄 sage
简介 scontend
班级名称 sgrade
是否删除 isDelete
配置数据库
django默认使用SQLite数据库
修改默认数据库,进入settings.py文件修改其中的DATABASE参数
1.打开__init__.py写入
import pymysql
pymysql.install_as_MySQLdb()
2.打开settings.py修改DATABASE参数为
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.数据库类型',
'NAME': '数据库名称',
'USER': '用户名',
'PASSWORD': '密码',
'PORT': '端口号',
'HOST': '数据库ip',
}
}
创建应用
以个项目可以创建多个应用,每个应用处理一个事件
1.打开shell进入项目目录,输入python manage.py startapp myApp
myApp为应用名称
2.目录层级
myApp
│ admin.py 站点配置
│ apps.py
│ models.py 模型
│ tests.py
│ views.py 视图
│ __init__.py
│
└─migrations
__init__.py
激活应用
1.打开settings.py 配置文件找到INSTALLED_APPS,最后一行加上'myApp'
定义模型
1.一个数据表格就对应一个模型
2.在myApp的models.py中定义模型,导入from django.db import models
模型要继承models.Model类
//表名
class Grades (models.Model):
gname = models.CharField(max_length= 20)
gdate = models.DateTimeField()
ggirlsnum = models.IntegerField()
gboysnum = models.IntegerField()
isDelet = models.BooleanField(default= False)
class Students(models.Model):
sname = models.CharField(max_length= 20)
ssex = models.BooleanField(default= False)
sage = models.IntegerField()
scontend = models.CharField(max_length= 20)
# 关联外键,建立对应关系,参数一为主体,参数二为数据丢失操作CASCADE删除关联对象
sgrade = models.ForeignKey("Grades", on_delete= models.CASCADE)
isDelete = models.BooleanField(default= False)
注意:不需要设定主键,主键会自动添加。
生成数据表
1.生成迁移文件
打开shell进入项目目录,输入python manage.py makemigrations,此时生成了迁移文件但是数据库中并没有表格。
出现mysqlclient 1.3.13.......you has 0.9.3错误时
1.进入Python\Python37\Lib\
site-packages\django\db\backends\mysql\base.py
将文件中的如下代码注释
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required;
you have %s" % Database.__version__)
2、File “C:\Python37\lib\site-packages\django\db\backends\mysql\operations.py”, line 146, in last_executed_query
query = query.decode(errors=‘replace’)
打开此文件把146行的decode修改为encode
2.执行迁移
接着输入python manage.py migrate 此时数据库中就会产生我们想要的表格。
3.测试数据
接着输入python manage.py shell 进入命令行模式
输入
from myApp.models import Grades,Students
from django.utils import timezone
from datetime import *
插入数据
grade0 = Grades()
grade0.gname = 'python04'
grade0.gdate = datetime(year=2020,month=2,day=8)
grade0.ggirlsnum = 3
grade0.gboysnum = 70
grade0.save()
Grades.objects.all()//查看数据是否储存成功
查看某个特定的数据
Grades.objects.get(pk= n)
再次输入上方数据,创建新数据对象
grade1 = Grades()
grade1.gname = 'python04'
grade1.gdate = datetime(year=2020,month=2,day=8)
grade1.ggirlsnum = 3
grade1.gboysnum = 70
grade1.save()
Grades.objects.get(pk= 2)//可与看到干输入的数据
修改数据
对象名.属性 = 值
对象名.save()
例如
grade1.name = 'python06'
grade1.save()
删除数据
对象名.delete()//物理删除
创建关联数据
stu = Students()
stu.sname = 'tom'
stu.ssex = 1
stu.sage = 20
stu.scontend = 'I am tom'
//关联外键
stu.sgrade = grade1
stu.save()
获取关联的所有数据
对象名.关联类名小写_set.all()
grade1.students_set.all()
从主对象创建关联数据对象(u中文转义)
stu4 = grade1.students_set.create(sname=u"李强",ssex=1,sage=28,scontend=u'我是李强')
注意:直接添加到数据表中了,不需要保存。
启动服务器
还是project目录下的shell输入python manage.py runserver ip:port
注意:ip不写表示本机,port默认为8000,轻量级服务器测试用
admin站点管理
功能:提供负责添加、修改、删除数据可视化窗口
1.配置:在settings.py中的INSTALLED_APPS添加'django.contrib.admin', 默认添加好的
2.创建管理员账户
还是在project目录的shell命令行输入python manage.py createsuperuser
输入账户名 root 密码 123456789
3.进入管理员界面
输入网址http://localhost:8000/admin
界面的汉化,进入settings.py修改
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
4.管理数据表
进入admin.py输入
# 导入设定的模型
from .models import Grades,Students
# 注册设定的模型
admin.site.register(Grades)
admin.site.register(Students)
5.自定义界面
修改代码
from django.contrib import admin
# Register your models here.
# 导入设定的模型
from .models import Grades,Students
class GradesAdmin(admin.ModelAdmin):
#列表页属性
# 显示字段标签
list_display = ['pk', 'gname', 'gdate', 'ggirlsnum', 'gboysnum', 'isDelet']
# 过滤器,添加过滤条件
list_filter = ['gname']
#搜索字段,添加搜索方式
search_fields = ['gname']
#xianshi每页显示最大数据量,多的分页
list_per_page = 5
#添加、修改页属性
#对添加、修改页属性从新排序
# fields = ['gname', 'ggirlsnum', 'gdate', 'gboysnum', 'isDelet']
# 对添加和修改页的属性分组并排序,fields和fieldset不可同时使用
fieldsets = [
('string',{'fields': ['gname', 'gdate']}),
('number', {'fields': ['ggirlsnum', 'gboysnum','isDelet']})
]
# 注册设定的模型
admin.site.register(Grades, GradesAdmin)
6.创建对象一并添加关联对象
# TabularInline扁平添加 stackedInline堆叠添加
class GradesAddStudents(admin.TabularInline):
# 采用的模型
model = Students
# 添加条数
extra = 2
class GradesAdmin(admin.ModelAdmin):
# 添加关联数据
inlines = [GradesAddStudents]
7.布尔值的显示修改和页面列项的修改
class StudentsAdmin(admin.ModelAdmin):
# 更改布尔值的显示内容
def sex(self):
if self.ssex:
return '男'
else:
return '女'
# 修改页面列项的名称
sex.short_description = '性别'
8.执行动作的位置修改
class StudentsAdmin(admin.ModelAdmin):
def sex(self):
if self.ssex:
return '男'
else:
return '女'
# 修改页面列项的名称
sex.short_description = '性别'
#执行动作的位置更该
actions_on_bottom = True
actions_on_top = False
9.注册的简易写法
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
# 更改布尔值的显示内容
def sex(self):
if self.ssex:
return '男'
else:
return '女'
# 修改页面列项的名称
sex.short_description = '性别'
list_display = ['sname',sex,'sage', 'scontend', 'sgrade', 'isDelete']
list_per_page = 3
list_filter = ['sname', 'sage']
#执行动作的位置更该
actions_on_bottom = True
actions_on_top = False
# admin.site.register(Students,StudentsAdmin)
django的基本使用
最新推荐文章于 2024-04-07 13:19:06 发布