升级到Django 4.0后,运行时出现以下错误python manage.py runserver
...
File "/path/to/myproject/myproject/urls.py", line 16, in <module>
from django.conf.urls import url
ImportError: cannot import name 'url' from 'django.conf.urls' (/path/to/my/venv/lib/python3.9/site-packages/django/conf/urls/__init__.py)
Run Code Online (Sandbox Code Playgroud)
我的urls.py如下:
from django.conf.urls
from myapp.views import home
urlpatterns = [
url(r'^$', home, name="home"),
url(r'^myapp/', include('myapp.urls'),
]
Run Code Online (Sandbox Code Playgroud) 我想在管理面板中添加图表,我安装了该django-admin-charts
软件包,上面说将这些添加到settings.py
INSTALLED_APPS = (
'admin_tools_stats', # this must be BEFORE 'admin_tools' and 'django.contrib.admin'
'django_nvd3',
)
Run Code Online (Sandbox Code Playgroud)
但是添加之后却出现这样的错误:
ImportError: cannot import name 'smart_text' from 'django.utils.encoding' (E: \ test1 \ venv1 \ lib \ site-packages \ django \ utils \ encoding.py)
Run Code Online (Sandbox Code Playgroud)
我搜索了但没有找到太多关于 smart_text 的信息!也许 Django 版本 4 或 Python 版本 3.10.3 有问题?
我正在尝试将我的代码更新到最新的 Django 版本,方法 is_safe_url() 似乎已从新版本的 Django (4.0) 中删除。过去几个小时我一直在寻找替代方案,但没有成功。有谁知道 Django 4.0 中的方法有任何替代方案吗?
我在 Django 应用程序中使用翻译。由于我安装了 Django 版本 4,当我尝试导入时ugettexget_lazy
,如下面的代码所示
from django.utils.translation import ugettexget_lazy as _
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ImportError: cannot import name 'ugettext_lazy' from 'django.utils.translation'
Run Code Online (Sandbox Code Playgroud) 当我按下 pycharm 的绿色播放按钮时,我的 Django 项目正常工作。但是当单击调试按钮时,它会显示can't find '__main__' module in ''
.
我做了一点 RCA,发现在使用调试选项运行时__spec__
被设置为打开。__main__
这是相关的代码段/lib/python3.8/site-packages/django/utils/autoreload.py
# __spec__ is set when the server was started with the `-m` option,
# see https://docs.python.org/3/reference/import.html#main-spec
# __spec__ may not exist, e.g. when running in a Conda env.
if getattr(__main__, '__spec__', None) is not None:
spec = __main__.__spec__
if (spec.name == '__main__' or spec.name.endswith('.__main__')) and spec.parent:
name = spec.parent
else:
name = spec.name
args += ['-m', name]
args += sys.argv[1:]
Run Code Online (Sandbox Code Playgroud)
请帮助我找到解决方法,以便使用 …
HttpRequest.is_ajax() 方法已被弃用,因为它依赖于 jQuery 特定的方式来表示 AJAX 调用,而当前的使用倾向于使用 JavaScript Fetch API。根据您的用例,您可以编写自己的 AJAX 检测方法,或者如果您的代码依赖于客户端 Accept HTTP 标头,则可以使用新的 HttpRequest.accepts() 方法。
我已经部署了一个 django 应用程序(使用 uvicorn 在 ASGI 上)并获得了很多 OperationalError FATAL: sorry, too many clients already
这似乎是 django 4.x 和 ASGI 的一个已知问题 #33497,但到目前为止我找不到任何内容(除了承认它)
有没有办法解决这个问题,或者我应该切换到 WSGI(或降级到 3.2)?
在我看来,这对于使用 ASGI 来说是一个阻碍问题。难道不应该更好地记录下来吗?(除非我错过了)
你好 SO 和 Django 社区,
我的问题与Django 4有关,因为这个版本中已经出现了使用passfile连接Postgres的功能。尽管我已经解决了有关以前版本的类似错误消息相关问题,但我没有成功解决我的问题。
我正在尝试做什么
我想将 Postgres 数据库 DB_MyProject 连接到 django MyProject。在 Django 4 中,您可以使用密码文件,而不是在 settings.py 中提供所有用户/密码信息。有关此新功能的文档位于此处。这里解释了Postgres中密码文件的概念,您还可以在这里阅读有关连接服务的内容。
在按照我的最佳理解遵循这些文档后,我完成了以下操作:
'default': {
'ENGINE': 'django.db.backends.postgresql',
'OPTIONS': {
'service': 'db_service',
'passfile': '.pgpass',
},
}
}
Run Code Online (Sandbox Code Playgroud)
[db_service]
host=localhost
port=5432
dbname=DB_MyProject
user=my_postgres_user
Run Code Online (Sandbox Code Playgroud)
localhost:5432:DB_MyProject:my_postgres_user:my_passwd
Run Code Online (Sandbox Code Playgroud)
现在,这个 .pgpass 文件存在于多个位置,这是为了使此工作正常进行的结果: …
django-4.0 ×8
django ×5
python ×4
ajax ×1
asgi ×1
django-3.1 ×1
django-4.1 ×1
django-admin ×1
django-urls ×1
postgresql ×1
pycharm ×1
python-3.10 ×1
python-3.x ×1