前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iis配置django3.0 报错 argument of type 'WindowsPath' is not iterable

iis配置django3.0 报错 argument of type 'WindowsPath' is not iterable

原创
作者头像
对你的承诺
修改2020-12-01 16:40:06
7220
修改2020-12-01 16:40:06
举报
文章被收录于专栏:Django学习Django学习

上篇文章升级了django版本为3.0今天部署到iis时报错:

代码语言:javascript
复制
Error occurred:

Traceback (most recent call last):
  File "E:\Event\wfastcgi.py", line 854, in main
    result.close()
  File "D:\python\lib\site-packages\django\http\response.py", line 252, in close
    signals.request_finished.send(sender=self._handler_class)
  File "D:\python\lib\site-packages\django\dispatch\dispatcher.py", line 175, in send
    for receiver in self._live_receivers(sender)
  File "D:\python\lib\site-packages\django\dispatch\dispatcher.py", line 175, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "D:\python\lib\site-packages\django\db\__init__.py", line 57, in close_old_connections
    conn.close_if_unusable_or_obsolete()
  File "D:\python\lib\site-packages\django\db\backends\base\base.py", line 514, in close_if_unusable_or_obsolete
    self.close()
  File "D:\python\lib\site-packages\django\db\backends\sqlite3\base.py", line 248, in close
    if not self.is_in_memory_db():
  File "D:\python\lib\site-packages\django\db\backends\sqlite3\base.py", line 367, in is_in_memory_db
    return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  File "D:\python\lib\site-packages\django\db\backends\sqlite3\creation.py", line 12, in is_in_memory_db
    return database_name == ':memory:' or 'mode=memory' in database_name
TypeError: argument of type 'WindowsPath' is not iterable


StdOut: 

StdErr:

再次刷新报错:

代码语言:javascript
复制
Error occurred:

Traceback (most recent call last):
  File "E:\Event\wfastcgi.py", line 847, in main
    result = handler(record.params, response.start)
  File "D:\python\lib\site-packages\django\core\handlers\wsgi.py", line 139, in __call__
    signals.request_started.send(sender=self.__class__, environ=environ)
  File "D:\python\lib\site-packages\django\dispatch\dispatcher.py", line 175, in send
    for receiver in self._live_receivers(sender)
  File "D:\python\lib\site-packages\django\dispatch\dispatcher.py", line 175, in <listcomp>
    for receiver in self._live_receivers(sender)
  File "D:\python\lib\site-packages\django\db\__init__.py", line 57, in close_old_connections
    conn.close_if_unusable_or_obsolete()
  File "D:\python\lib\site-packages\django\db\backends\base\base.py", line 514, in close_if_unusable_or_obsolete
    self.close()
  File "D:\python\lib\site-packages\django\db\backends\sqlite3\base.py", line 248, in close
    if not self.is_in_memory_db():
  File "D:\python\lib\site-packages\django\db\backends\sqlite3\base.py", line 367, in is_in_memory_db
    return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  File "D:\python\lib\site-packages\django\db\backends\sqlite3\creation.py", line 12, in is_in_memory_db
    return database_name == ':memory:' or 'mode=memory' in database_name
TypeError: argument of type 'WindowsPath' is not iterable


StdOut: 

StdErr:

折腾了一天没有解决:开始以为是iis问题,但是看到代码已经是网页报错了,而且好像是数据库问题,关键是数据库还是原来的数据库,都是一样的代码,就是部署到iis不能使用。后来参考了https://blog.csdn.net/qq_45652065/article/details/109704758的文章将settings里的

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

改为:

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': str(os.path.join(BASE_DIR, "db.sqlite3")),
    }
}

解决问题,回头看django 2.2版本的settings中确实也是这么写的,不明白为什么到3.0更改并且不能正常运行

记录一下。帮助爬坑

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档