在Django框架下,其python中默认使用的是sqlite数据库,因此这里我们更改为更常用的轻量型的MYSQL.
首先,在Linux系统中安装好mysql:
sudo apt-get install mysql-server
然后按照步骤操作即可.详细细节就自行百度了.接着在python环境中安装pymysql包:
pip install pymysql
此时我们接着需要配置Django相关配置文件,主要是setting.py文件:
更改原来默认文件内容为:
其实就是在setting里面配置指定使用mysql数据库,使用数据库名,使用者,密码,ip地址,端口.
接着在__init__.py文件加上:
import pymysql
pymysql.install_as_MySQLdb()
在setting.py文件中添加要生成的应用名称:
然后用以下的命令生成相关应用文件:
然后在生成的myapp1文件下的models.py文件上使用models类操作数据库数据,并且将其关联起来
#models.py
from django.db import models
# Create your models here.
class Grades(models.Model):
g_name = models.CharField(max_length=20)
g_date = models.DateTimeField()
g_girlnum = models.IntegerField()
g_boynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
class Students(models.Model):
s_name = models.CharField(max_length=20)
s_gender = models.BooleanField(default=True)
s_age = models.IntegerField()
s_contend = models.CharField(max_length=20)
isDelete = models.BooleanField(default=False)
# 关联外界
s_grade = models.ForeignKey("Grades", on_delete=models.CASCADE)
其次将其生成数据库迁移文件:
查看数据库生成的表:
生成两个空表,接着在启动相应python shell 操作往数据库里面添加数据
查看数据库表,得到更新的数据
继续添加数据,并且查看
包含比较敏感字眼,在此就不显示了
然后讲整个应用run起来
在浏览器上打开:127.0.0.1:8000
在这之前我们配置setting.py文件,使其支持中文显示
效果:
但是每次需要一些对发布公告的操作时候,都需要很复杂重复的添加修改等操作,我们希望可以像界面一样实现可视化操作,那么Django也提供了这样的支持:
添加超级管理员:
然后在浏览器登入:127.0.0.1:8000/admin
接下来我们展示如何管理我们的数据表:
在myapp1文件夹下的admin.py文件中加入注册模型代码:
# admin.py
from django.contrib import admin
# Register your models here.
# 从当前导入模型
from .models import Grades,Students
# 进行注册
admin.site.register(Grades)
admin.site.register(Students)
我们把界面定义的更友好一些:
我们修改admin.py
# admin.py
from django.contrib import admin
# Register your models here.
# 从当前导入模型
from .models import Grades,Students
# 进行注册
class GradesAdmin(admin.ModelAdmin):
# 列表属性添加
# 列表
list_display = ['pk', 'g_name', 'g_date', 'g_girlnum', 'g_boynum', 'isDelete']
# 过滤器
list_filter = ['g_name']
# 搜索
search_fields = ['g_name']
# 分页
list_per_page = 5
# 添加,修改属性,这两个不能同时使用
# 规定属性的先后顺序
# fields= ['g_girlnum', 'g_boynum', 'g_date', 'g_name', 'isDelete']
# 给属性分组
fieldsets = [
("num", {"fields":["g_girlnum", "g_boynum"]}),
("base", {"fields":["g_name", "g_date", "isDelete"]})
]
admin.site.register(Grades, GradesAdmin)
admin.site.register(Students)
效果分别如下:
同时数据库也同步更新了数据
下面把Students类也关联进来:
from django.contrib import admin
# Register your models here.
# 从当前导入模型
from .models import Grades,Students
# 进行注册
class GradesAdmin(admin.ModelAdmin):
# 列表属性添加
# 列表
list_display = ['pk', 'g_name', 'g_date', 'g_girlnum', 'g_boynum', 'isDelete']
# 过滤器
list_filter = ['g_name']
# 搜索
search_fields = ['g_name']
# 分页
list_per_page = 2
# 添加,修改属性,这两个不能同时使用
# 规定属性的先后顺序
# fields= ['g_girlnum', 'g_boynum', 'g_date', 'g_name', 'isDelete']
# 给属性分组
fieldsets = [
("num", {"fields":["g_girlnum", "g_boynum"]}),
("base", {"fields":["g_name", "g_date", "isDelete"]})
]
class StudentsAdmin(admin.ModelAdmin):
# 列表属性添加
# 列表
list_display = ['pk', 's_name', 's_gender', 's_age', 's_contend', 'isDelete']
# 过滤器
list_filter = ['s_name']
# 搜索
search_fields = ['s_name']
# 分页
list_per_page = 2
# 添加,修改属性,这两个不能同时使用
# 规定属性的先后顺序
# fields= ['g_girlnum', 'g_boynum', 'g_date', 'g_name', 'isDelete']
# 给属性分组
fieldsets = [
("num", {"fields":["s_name", "s_contend"]}),
("base", {"fields":["s_age", "s_gender", "isDelete"]})
]
admin.site.register(Grades, GradesAdmin)
admin.site.register(Students, StudentsAdmin)