Django框架下使用mysql数据库

在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)





展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读