继续上篇的内容,接着通过ORM框架、设计模型来对模型这一知识点有个基本的掌握。
1.ORM框架
简要的一个映射关系,如图所示:
2.设计模型案例
在上篇的基础上修改数据库为mysql数据库;
(1)安装pymysql;
Pip install pymysql
(2)配置mysqldb,在项目主目录下的__init__.py中配置mysqldb;
import pymysql
pymsyql.install_as_MySQLdb()
(3)在mysql中创建数据库eles;
(4)修改settings.py中数据库的配置选项;
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'eles',
'HOST' : 'localhost',
'USER' : 'root',
'PASSWORD' : '112233',
'PORT' : 3306
}
}
接着开始创建应用;
(1)在创建应用程序前,要先进入项目目录myweb;
cd myweb
(2)进入myweb目录后,创建“myapp”应用程序,此时需要manage.py来交互,命令如下;
python manage.py startapp myapp
(3)成功创建myapp应用程序后,需要把它注册到Django项目“myweb”中,即到settings.py文 件中更新INSTALLED_APPS列表值;
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 添加
]
开始定义模型类,在创建的myapp程序的models.py文件中编写如下代码:
from django.db import models
# Create your models here.
# 自定义电脑类
class Computer(models.Model):
cbrand = models.CharField(max_length=10)
cprice = models.FloatField()
cpub_time = models.DateField()
cfactoryid = models.ForeignKey("FactoryInfo")
def __str__(self):
return self.cbrand
# 自定义厂家类
class FactoryInfo(models.Model):
fname = models.CharField(max_length=10)
flisted = models.BooleanField()
fcontent = models.CharField(max_length=100)
def __str__(self):
return self.fname + ":" + self.fcontent
注意在生成迁移文件前要在myweb/myweb/__init__.py文件中引入,如下:
import pymysql
pymysql.install_as_MySQLdb()
最后生成数据表,先将其生成迁移文件,然后执行SQL语句生成数据表;
python manage.py makemigrations
迁移文件:
python manage.py migrate
到这里在Django中生成一个简单的数据表就完成了,若要对表的数据进行增删查改的操作,,则 可进入Python Shell脚本;
python manage.py shell
简单的了解以下几个操作函数,便可对数据进行增删查改操作,如下图:
3.后台管理
在往数据表中添加数据内容后,开始创建一个管理员;
python manage.py createsuperuser
注册完用户名、密码等后,进入浏览器进行访问;
当成功进入到管理站点后,可默认对groups、users进行管理;
自定义管理页面 :
(1)本地化处理:若要整个页面中文化,则需要编辑settings.py文件的编码;
LANGUAGE_CODE = 'en-us'
# 修改成
LANGUAGE_CODE = 'zh-Hans'
以及时区的修改;
TIME_ZONE = 'UTC'
# 修改
TIME_ZONE = 'Asia/Shanghai'
当编辑完上述的LAGUAGE_CODE和TIME_ZONE后,再启动服务器,可看到整个页面中文化;
(2)注册模型及自定义管理界面:
为了把生成的数据表显示出来则需要向myweb/myapp/admin.py文件中注册模型;
from django.contrib import admin
# Register your models here.
from .models import Computer,FactoryInfo
# 定义后台类展示设置
class computerAdmin(admin.ModelAdmin):
list_display = ['id','cbrand','cprice','cpub_time','cfactoryid_id']
search_fields = ['cbrand']
class factoryinfoAdmin(admin.ModelAdmin):
list_display = ['id', 'fname', 'flisted', 'fcontent']
# 注册
admin.site.register(Computer,computerAdmin)
admin.site.register(FactoryInfo,factoryinfoAdmin)
注意:若在 Book 类中的__str__()方法中返回中文且在修改和添加时会报ascii 的错误,则可以在 __str__()方法中,将字符串末尾添加“.encode('utf-8')”即可。
完成上述后,刷新管理页面,如下: