详细阅读:(http://www.cnblogs.com/wupeiqi/articles/5246483.html)
app:
migrations 数据修改表结构
admin Django为我们提供的后台管理
apps 配置当前app
models ORM,写指定的类 通过命令可以创建数据库结构
tests 单元测试
views 业务代码
四.ORM操作
select * from tb where id > 1
# 对应关系
models.tb.objects.filters(id__gt=1)
models.tb.objects.filters(id=1)
models.tb.objects.filters(id__lt=1)
a.修改settings.py
'''
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
'''
b.创建类
# app01_userinfo
class UserInfo(models.Model):
# Django自动创建id列,自增,主键
# 用户名列,字符串类型,指定长度
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
c.执行命令
(python manage.py makemigrations)[创建表]
(python manage.py migrate)[生成数据库]
d.*************注意*******************
python3没有MySQLdb模块
要用pymysql模块
如果要连接mysql的话
要在s14day19_2\__init__.py目录修改__init__.py
添加以下代码:
'''
import pymysql
pymysql.install_as_MySQLdb()
'''
django默认使用MySQLdb模块连接MySQL
主动修改为pymysql:在project同名文件夹下的__init__文件中添加如下代码即可:
'''
import pymysql
pymysql.install_as_MySQLdb()
'''
1. 根据类自动生成创建数据库系统表
# app下的models.py
python manage.py makemigrations
python manage.py migrate
字段:
字符串类型
数字
时间
二进制
自增(primary_key=True)
字段的参数:
null(db是否可以为空) 数据库中字段是否可以为空
db_column(列名) 数据库中字段的列名
db_tablespace
default(默认值) 数据库中字段的默认值
primary_key(主键) 数据库中字段是否为主键
db_index(索引) 数据库中字段是否可以建立索引
unique(唯一索引) 数据库中字段是否可以建立唯一索引
unique_for_date 数据库中字段【日期】部分是否可以建立唯一索引
unique_for_month 数据库中字段【月】部分是否可以建立唯一索引
unique_for_year 数据库中字段【年】部分是否可以建立唯一索引
auto_now(创建时,自动生成时间)
auto_now_add(更新时,自动更新为当前时间)
choices(django admin中显示下拉框,避免连表查询) Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
blank(django admin是否可以为空) Admin中是否允许用户输入为空
verbose_name(django admin显示字段中文) Admin中显示的字段名称
editable(django admin是否可以编辑) Admin中是否可以编辑
error_messages
help_text(django admin提示)
validators(django form,自定义错误信息)
# obj = UserGroup.objects.filter(id=1).update(caption='CEO')
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save()
help_text Admin中该字段的提示信息
如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)
error_messages 自定义错误信息(字典类型),从而定制想要显示的错误信息;
字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date
如:{'null': "不能为空.", 'invalid': '格式错误'}
validators 自定义错误验证(列表类型),从而定制想要的验证规则
from django.core.validators import RegexValidator
from django.core.validators import EmailValidator,URLValidator,DecimalValidator,\
MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator
如:
test = models.CharField(
max_length=32,
error_messages={
'c1': '优先错信息1',
'c2': '优先错信息2',
'c3': '优先错信息3',
},
validators=[
RegexValidator(regex='root_\d+', message='错误了', code='c1'),
RegexValidator(regex='root_112233\d+', message='又错误了', code='c2'),
EmailValidator(message='又错误了', code='c3'), ]
)
参数
2. 根据类对数据库表中的数据进行各种操作
一对多:
a.外键
b.
外键字段_id
c.
models.tb.object.create(name='root',user_group_id=1)
d.
userlist = models.tb.object.all()
for row in userlist:
row.id
row.user_group_id
row.user_group.caption