标签: django-4.0

ImportError:升级到 Django 4.0 后无法从“django.conf.urls”导入名称“url”

升级到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)

python django django-urls django-4.0

178
推荐指数
2
解决办法
20万
查看次数

安装 django-admin-charts 后出现关于 smart_text 的错误

我想在管理面板中添加图表,我安装了该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-admin python-3.10 django-4.0

9
推荐指数
2
解决办法
1万
查看次数

无法从 django.utils.http 导入 is_safe_url ,替代方案?

我正在尝试将我的代码更新到最新的 Django 版本,方法 is_safe_url() 似乎已从新版本的 Django (4.0) 中删除。过去几个小时我一直在寻找替代方案,但没有成功。有谁知道 Django 4.0 中的方法有任何替代方案吗?

python django django-4.0

9
推荐指数
1
解决办法
5646
查看次数

Django4.0 ImportError:无法从“django.utils.translation”导入名称“ugettext_lazy”

我在 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)

python django python-3.x django-4.0

8
推荐指数
1
解决办法
1万
查看次数

Django 4 Pycharm 调试器错误:无法在 '' 中找到 '__main__' 模块

当我按下 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)

请帮助我找到解决方法,以便使用 …

pycharm django-4.0

5
推荐指数
1
解决办法
843
查看次数

Django 如何检查请求是否是 Ajax

HttpRequest.is_ajax() 方法已被弃用,因为它依赖于 jQuery 特定的方式来表示 AJAX 调用,而当前的使用倾向于使用 JavaScript Fetch API。根据您的用例,您可以编写自己的 AJAX 检测方法,或者如果您的代码依赖于客户端 Accept HTTP 标头,则可以使用新的 HttpRequest.accepts() 方法。

django ajax django-request django-3.1 django-4.0

5
推荐指数
2
解决办法
4291
查看次数

数据库连接太多(django 4.x / ASGI)

我已经部署了一个 django 应用程序(使用 uvicorn 在 ASGI 上)并获得了很多 OperationalError FATAL: sorry, too many clients already

这似乎是 django 4.x 和 ASGI 的一个已知问题 #33497,但到目前为止我找不到任何内容(除了承认它)

有没有办法解决这个问题,或者我应该切换到 WSGI(或降级到 3.2)?

在我看来,这对于使用 ASGI 来说是一个阻碍问题。难道不应该更好地记录下来吗?(除非我错过了)

django asgi django-4.0 django-4.1

5
推荐指数
1
解决办法
718
查看次数

Django 4 使用 passfile 连接到 Postgresql:“fe_sendauth:未提供密码”

你好 SO 和 Django 社区,

我的问题与Django 4有关,因为这个版本中已经出现了使用passfile连接Postgres的功能。尽管我已经解决了有关以前版本的类似错误消息相关问题,但我没有成功解决我的问题。

我正在尝试做什么

我想将 Postgres 数据库 DB_MyProject 连接到 django MyProject。在 Django 4 中,您可以使用密码文件,而不是在 settings.py 中提供所有用户/密码信息。有关此新功能的文档位于此处这里解释了Postgres中密码文件的概念,您还可以在这里阅读有关连接服务的内容。

在按照我的最佳理解遵循这些文档后,我完成了以下操作:

  1. 在 Django 项目的 settings.py 中创建了以下 DATABASES 条目,如下所示
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'OPTIONS': {
            'service': 'db_service',
            'passfile': '.pgpass',
        },
    }
} 
Run Code Online (Sandbox Code Playgroud)
  1. 在 pg 配置目录 ( pg_config --sysconfdir) 中,使用以下信息创建文件 pg_service.conf ,如pg 文档django 文档中所示:
[db_service]
host=localhost
port=5432
dbname=DB_MyProject
user=my_postgres_user
Run Code Online (Sandbox Code Playgroud)
  1. 创建了一个 .pgpass 文件,如pg docs中所示:
localhost:5432:DB_MyProject:my_postgres_user:my_passwd
Run Code Online (Sandbox Code Playgroud)

现在,这个 .pgpass 文件存在于多个位置,这是为了使此工作正常进行的结果: …

python postgresql django-4.0

4
推荐指数
1
解决办法
3683
查看次数