一.前语
在通过上篇《Dragonboard410c 服务器系列六之用户交互体系》的学习,博主信任咱们都能大致把握Django结构根底的web服务器建立以及简略的数据交互。可是,往深处想,Django是怎么存储不同页面的交互数据的?信任有看过博主之前上传的代码的童鞋都现已知晓,这也是咱们今日要评论的主题:数据库。
二.数据库
1.概念:
数据库(Database)是依照数据结构来安排、存储和办理数据的建立在计算机存储设备上的库房。简略来说是自身可视为电子化的文件柜——存储电子文件的场所,用户能够对文件中的数据进行新增、截取、更新、删去等操作。在经济办理的日常工作中,常常需求把某些相关的数据放进这样的“库房”,并依据办理的需求进行相应的处理。能够说数据库的规划是web后台架构规划的重中之重,合理的数据库规划将会为后台节约很多的运算过程和进步全体的运转功率,这也是衡量一个后台工程师功底的重要规范。
2.Django的数据库:
2.1.介绍:
Django的数据库,咱们称之为模型,与数据库相关的代码一般写在 models.py 中,Django 支撑 sqlite3, MySQL, PostgreSQL等数据库,只需求在setTIngs.py中装备即可,不必更改models.py中的代码,丰厚的API极大的方便了运用。当然,咱们也能够依据自己的需求去自界说filed,也便是自己的模型。比方上篇的用户交互体系,咱们就不只承继的原有MyUser,还自界说了音讯的模型:online_message以及体系的状况模型:online_SystemStatus.
2.2 创立过程:
2.2.1.创立django项目:
django-admin startproject test
2.2.2.创立webapp:
cd test
django-admin startapp sql
2.2.3.增加webapp进test项目:
vim test/test/setTIngs.py
INSTALLED_APPS = (
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staTIcfiles’,
‘sql’,
)
2.2.4.界说sql的数据模型:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
2.2.5.初始化数据库数据:
cd ~/test
python manage.py makemigraTIons sql
python manage.py migrate
3.实例模型代码:
#coding:utf8
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser, PermissionsMixin)
class MyUserManager(BaseUserManager):
# def _create_user(self, username, email, password, **extra_fields):
def _create_user(self, username, password, **extra_fields):
Creates and saves a User with the given username, email and password.
if not username:
raise ValueError(‘The given username must be set’)
# email = self.normalize_email(email)
# user = self.model(username=username, email=email, **extra_fields)
user = self.model(username=username, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
# def create_user(self, username, email, password, **extra_fields):
def create_user(self, username, password, **extra_fields):
extra_fields.setdefault(‘is_staff’, False)
extra_fields.setdefault(’email’,)
extra_fields.setdefault(‘phone’,)
extra_fields.setdefault(‘haarValue’,)
extra_fields.setdefault(‘avatarImg’,)
# extra_fields.setdefault(‘text’,)
# extra_fields.setdefault(‘video’,)
# extra_fields.setdefault(‘time’,)
return self._create_user(username, password, **extra_fields)
# return self._create_user(username, email, password, **extra_fields)
# def create_superuser(self, username, email, password, **extra_fields):
def create_superuser(self, username, password, **extra_fields):
extra_fields.setdefault(‘is_staff’, True)
if extra_fields.get(‘is_staff’) is not True:
raise ValueError(‘Superuser must have is_staff=True’)
#拓宽user数据 by xiao
#get
#to
#message_flag
#text
#video
#time
# extra_fields.setdefault(‘got’,username)
# extra_fields.setdefault(‘to’,username)
# extra_fields.setdefault(‘message_flag’,1)
# extra_fields.setdefault(‘text’,)
# extra_fields.setdefault(‘video’,)
# extra_fields.setdefault(‘time’,)
return self._create_user(username, password, **extra_fields)
# return self._create_user(username, email, password, **extra_fields)
class MyUser(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=254, unique=True, db_index=True)
email = models.CharField(max_length=254)
phone = models.CharField(max_length=254)
haarValue = models.CharField(max_length=254)
avatarImg = models.CharField(max_length=254)
#email = models.EmailField(’email address’, max_length=254)