1.准备工作
- 需要安装Django包 django2.1.5+mysql5.7
- 需要启动mysql服务,并创建一个数据库
- 需要安装pymysql服务,代码如下:
pip install pymysql==版本(0.9.3)
- 创建Django项目
新建django项目出现TypeError: unsupported operand type(s) for /: 'str' and 'str'问题
解决方案:
在settings.py中找到上面代码,把DIRS那行注释掉,用下面一行代替即可解决问题。
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 'DIRS': [BASE_DIR / 'templates'] 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ],
2.连接mysql数据库
2.1在settings.py文件中配置数据库
DATABASES = { 'default': { # 连接本地mysql数据库 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mybatis', # 你的数据库名 'USER': 'root', # 你的用户名 'PASSWORD': '123456', # 你的密码 'HOST': 'localhost', # 本地连接 'PORT': '3306', # 本地端口号 } }
2.2设置models.py模型类
from django.db import models class Blog_Model(models.Model): name = models.CharField(db_column='name', max_length=200, blank=True, verbose_name='name') class Meta: db_table = 'Blog' class User3(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=50) level = models.IntegerField(default=1) createTime = models.DateTimeField(null=True) class Meta: db_table = 'User3'
2.3在项目的settings.py文件 INSTALLED_APPS 中插入 项目名
2.4生成迁移文件
python manage.py makemigrations db_manager
2.5执行迁移生成列表
python manage.py migrate
3 报错问题解决
3.1DJANGO_SETTINGS_MODULE
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
解决方案:
import os from django.apps import apps from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main_test.settings') apps.populate(settings.INSTALLED_APPS)
3.2 Model doesn't declare an explicit app_label
RuntimeError: Model class db_manager.models.Blog_Model doesn't declare an explicit app_label and isn’t in an application in INSTALLED_APPS.
解决方案:加上main_test.
3.3 RuntimeError: populate( ) isn't reentrant
这个错误信息是一个笼统的错误信息,这里django把他真正的错误信息隐藏了。因此如果想得到真正的报错信息需要改源码,位置就在下方报错信息的"/Users/zonghan/PycharmProjects/envpython3.9/lib/python3.9/site-packages/django/apps/registry.py" 。
File "/Users/zonghan/PycharmProjects/envpython3.9/lib/python3.9/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/Users/zonghan/PycharmProjects/envpython3.9/lib/python3.9/site-packages/django/apps/registry.py", line 83, in populate raise RuntimeError("populate() isn't reentrant")
解决方案:
点进去把
raise RuntimeError("populate() isn't reentrant")
替换成
self.app_configs = {}
再次运行django就可以看到真正的错误信息
找到真正错误后,可以还原回去。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)