「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。
0 环境
- 系统环境:window
- 编辑器:IDEA
- 开发语言:django3.1.1
1 配置数据库
进入
settings.py文件,找到DATABASES, 在下面添加如下的数据,添加项如下:驱动名,数据库名(请核对好它,我之前就是因为它,排错了半天),填写数据库地址和端口,用户名和密码。标注下:正常情况下,DATABASES配好保存了,可以直接访问正常返回。但有时,填写DATABASES时,某些项可能填错了,肉眼会错过,建议最好将其copy到Navicat这类的数据库工具上,测试连接一下,么问题,在排查其他原因,若是报错了,说明某个项填写错误,在挨个排查找出真正元凶即可。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myblog',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123',
}
}
2 配置models
数据库默认为
null,在填写表单的时候blank可以为空。下面定义了一个model,创建了title和logo字段。title最大长度50,logo设置upload_to,上传路径。
from django.db import models
# Create your models here.
class SiteInfo(models.Model):
title = models.CharField(null=True,blank=True,max_length=50)
logo = models.ImageField(upload_to="logo/",null=True,blank=True)
def __str__(self):
return self.title
3 在admin中注册model
from django.contrib import admin
from .models import SiteInfo
admin.site.register(SiteInfo)
3 数据迁移报错
pymysql报错'mysqlclient 1.3.13 or newer is required'。
创建
init.py文件,复制下面的代码粘贴到init.py文件里,保存即可。
import pymysql
pymysql.version_info=(1, 4, 2, "final", 0)
pymysql.install_as_MySQLdb()
3 执行迁移
# 适用于单个应用
python manage.py makemigrations
python manage.py migrate
4 启动项目
python manage.py runserver
5 访问admin
进入项目根目录 创建超级管理员。
python manage.py createsuperuser
6 进入myblog
7 注意项
注意:没有myblog名 大概率没有添加admin.site.register(某个model)。
注意:有时会添加报错 没有遇到 直接略过
1.根据报错定位,如图下:
2.按照mvt的流程排查,比如model写的是否对,我就错在__str__。
3.检查是否迁移成功了,2、3不分先后(看情况)。
- 若是迁移问题
旧文件删除,重新生成。
、
- 在多应用的环境下 加需要迁移的某个应用名了。
python manage.py makemigrations myblog(指定应用名)
python manage.py migrate myblog(指定应用名)
8 小结
正常遇到的问题是
mysql配置、models编写错误、或者没在admin注册这几块,其中mysql配置注意了,假如是新买的云服务器,一定要装好了mysql程序,配置好后,连接测试一下,没问题了,再去到settings.py里配置,有时候因为云服务器防火墙等问题,使你无法通过使用,还有重要两点,一定要保证你云服务器的安全组已经开通了和mysql相关的某些端口,没有请及时添加,还有一点,有重要的数据,请及时快照或本地同步备份,之前就是搞崩过,想想都心痛,删库3s的快乐,别体验。