Python Django官网:https://www.djangoproject.com/
1、创建一个Django项目
2、新增一个app应用
python manage.py startapp stu
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'stu' ]
3、更换mysql数据源配置信息
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'python', 'HOST':'127.0.0.1', 'PORT':'3306', 'USER':'mybatis_ssm', 'PASSWORD':'xiaoli' } }
4、创建模型类post
class Post(models.Model): # 主键(不写的话Python会自动创建一个列名为id的数据库列名) pid = models.AutoField(primary_key=True) # 长度为30的唯一的字符串,admin中表单自带验证,该字段不能为空(blank=false),数据库值插入不能为空 title = models.CharField(max_length=30,unique=True,blank=False,null=False) # 文本域 content = models.TextField() # 点击量必须为正整数 access_count = models.PositiveIntegerField() # 打赏为五位有效数字,小数点后最多两位 price = models.DecimalField(max_digits=5,decimal_places=2) # 是否逻辑删除,默认false,也就是0 isdelete = models.BooleanField() # 执行插入操作的时候默认在数据库中添加为当前时间 年月日 created = models.DateField(auto_now_add=True) # 每次操作数据的时候都会将当前时间更新到数据库 modified = models.DateTimeField(auto_now=True) # 上传图片到指定的目录下,在这里指的是"test3/upload/images"下 img = models.ImageField(upload_to='upload/images') # 上传文件到指定的目录下,在这里指的是"test3/upload/files"下 file = models.FileField(upload_to='upload/files') class Meta: # 这里一般不要手动去更改表名,默认生成的表名容易从代码中去找对应的实体类 db_table='t_post' def __unicode__(self): return u'Post:%s'%self.title
5、更换数据源
pip install MySQL-python-1.2.5-cp27-none-win_amd64.whl
6、添加迁移文件
python manage.py makemigrations stu
出现下列错误:
解决方法:
pip install Pillow
然后再执行下
python manage.py makemigrations stu
注意:这样做数据库表是能够创建的,但是项目起不起来,控制台说是因为path问题,但是本人百度许久并未解决,如果有人解决这一问题,请联系QQ:4929424758,拜谢!!!
在这里为了案例顺利进行,我们暂且先将下面字段注释;
img = models.ImageField(upload_to='upload/images')
7、执行迁移文件
python manage.py migrate
8、将生成的数据库表的实体类交给admin进行管理
编辑admin.py(stu/admin.py)
from django.contrib import admin from .models import * # Register your models here. admin.site.register(Post)
9、创建admin管理后台的超级用户
python manage.py createsuperuser
10、进入Django后台admin管理界面
浏览器输入:
这是正常数据提交的截图
并且我们可以看到,在工程中的指定文件夹下出现了指定的文件,代表上传成功
数据库中也存在了对应的数据
总结重点
#### 常用字段类型 * django所有的数据模型都继承自models.Model * CharField max_length (输入框) * TextField 没有长度限制的字符串 (文本域) * DateField 日期 * DateTimeField 日期+时间 * BooleanField 真假 * NullBooleanField Null,真假, * Integer 整数 * PositiveIntegerField 正整数 * DecimalField max_digits(几位数) decimal_places(小数点后保留几位) * ImageField 图片 依赖于 Pillow(处理图片) upload_to='upload' 指定文件上传到目录 * FileField(ImageField继承FileField) * AutoField * ForeignKey 1:n * ManyToManyField n:n * EmailField 邮箱 * UUIDField 重复的概率非常低基本可以忽略,全世界都不一样的标示,uuid的产生和服务器的环境有关(CPU,网关,) 唯一性的标示,用户模块,订单号 * 不同的字段在后台对应不同的html的组件 ImageField 依赖于Pillow组件(python库) #### 常用属性 * unique 标示这个字段唯一 * default 默认的意思 ,(如果不写的话就使用默认的值) * null=True 允许字段为null,(允许数据库为null)数据库层面的 * blank=True 表单阶段的,admin后台的 * auto_now 针对时间的,自动调整当前,(当修改条目的时候,这个时间会自动更新),每次修改都会更新 (修改,保存的时候才会生效,) * auto_now_add 针对时间的,只添加一次,(创建的时间) ### 重点理解属性 ### * 表单层面的东西(js判断字段是否是" "),不需要重写迁移数据库 * unique=True 可以任何字段 * default 数据库+表单层面(同时生效) * auto_now_add 创建的时候会自动的添加时间(数据库),(后台表单层面找不到这个字段) * auto_now 每次修改的时候自动更新,(数据库+表单层面) * null=True 数据库层面,允许为Null,不是空字符串 * blank=True 表单层面的,后台选填(表单项元素可以为空,表单不会进行非空校验) ### uuid ### uuid.uuid4().get_hex() ### django迁移失败如何处理 ### * 删除模块下(问题模块)的所有的迁移记录 * 删除数据库中django_migrations中问题模块的迁移记录 DELETE FROM django_migrations WHERE app='模块名' * 删除这个模块下已经产生的所有的表 * 重新生成迁移文件 * 重新迁移#### 修改settings.py文件后台页面显示中文
`
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
修改为:
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
over......
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有