标签: django-settings

django-admin.py 找不到自定义设置文件

我有几个自定义的 django 设置,这基本上是我的项目结构:

MainProject/
  manage.py
  my_project/
    settings/
      base.py
      dev.py
      prod.py
Run Code Online (Sandbox Code Playgroud)

__init__.py我在目录中创建了文件以将它们标识为包。
我已将其导出DJANGO_SETTINGS_MODULE为指向所选的设置文件。
manage.py命令似乎处理得很好,我从来没有遇到过问题。

问题是无论我做什么都找不到任何设置文件。我已经尝试了几种可能的解决方案,但到目前为止似乎没有任何效果。django-admin.py

  1. 我用过--settings=my_project.settings.dev
  2. 我已经编辑并硬编码了manage.py让它指向 dev.py 文件
  3. 我在导入dev文件的和目录settings中创建了一个文件(依次导入 base.py)。MainProjectmy_project
  4. 我创建了一个settings文件,让 Django 知道它应该使用哪些文件settings

这是关于第4点:

from django.core.management import setup_environ
try:
    import my_project.settings.dev as settings
except ImportError:
    import sys
    sys.stderr.write("Couldn't find the settings.py module.")
    sys.exit(1)
setup_environ(settings)
Run Code Online (Sandbox Code Playgroud)

到目前为止似乎没有任何效果。

=====================================

解决方案:
我没有找到确切的解决方案,但由于对所选答案的评论,我了解到您基本上可以用于manage.py您可以在 中执行的所有操作django-admin.py,我不知道!因为事情确实对我有用,所以manage.py我对此很满意。

django django-admin django-manage.py django-settings

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

如何在heroku-django项目中设置环境变量?

我的settings.py中有这段代码..

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD')
Run Code Online (Sandbox Code Playgroud)

我尝试在heroku bash中使用它设置环境变量

export EMAIL_HOST_USER=xxx
Run Code Online (Sandbox Code Playgroud)

并且

heroku config:set EMAIL_HOST_USER=xxx
Run Code Online (Sandbox Code Playgroud)

这两种方法都不适合我。如何在heroku中设置环境变量?

django heroku django-settings

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

Django 不搜索 APP_DIRS 设置中定义的模板目录

我有一个与项目目录处于同一级别的模板目录,因此我放入了 settings.py

'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
Run Code Online (Sandbox Code Playgroud)

但 Django 不会在应用程序中搜索模板,它会在 DIRS 处停止

所有需要的应用程序均已安装

python django django-templates django-settings

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

Django 在 DATABASES 中设置 TIME_ZONE 对“日期”查找没有影响

2019 年 4 月 8 日更新

\n\n

这是 django<=2.2 的一个已知错误,自此PR起已修复

\n\n

===================================

\n\n

(我们假设mysql后端)

\n\n

我可以在 中设置TIME_ZONE多次settings.py,一次用于全局 django 应用程序,一次用于每个数据库(请参阅https://docs.djangoproject.com/en/1.11/ref/settings/#time-zone (ref1))

\n\n

典型用法是用于日期时间不以 UTC 存储的旧数据库。

\n\n

没有日期查找

\n\n

查询我的数据库会考虑此设置,例如:

\n\n

settings.py

\n\n
USE_TZ = True\nTIME_ZONE = \'Europe/Paris\' # tz1\nDATABASES = {\n    \'legacy\': {\n        \'ENGINE\': \'django.db.backends.mysql\',\n        \'OPTIONS\': {\n            \'read_default_file\': \'....cnf\',\n        },\n        \'TIME_ZONE\': \'Europe/Paris\', # tz2\n    },\n    \'default\' : {\n        \'ENGINE\': \'django.db.backends.mysql\',\n        \'OPTIONS\': {\n            \'read_default_file\': \'....cnf\',\n        },\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在里面manage.py shell

\n\n
>>> dt = …
Run Code Online (Sandbox Code Playgroud)

python django django-database django-settings django-1.11

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

如何使用 smtp.EmailBackend 在 Django 中发送电子邮件而无需通过邮件服务器进行身份验证

有没有办法明确告诉 Django 在发送电子邮件时不要通过邮件服务器进行身份验证。

我目前在 settings.py 中使用以下设置来发送电子邮件。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'my-mail-server'
EMAIL_PORT = 25
Run Code Online (Sandbox Code Playgroud)

请注意,我没有EMAIL_HOST_USER并且EMAIL_HOST_PASSWORD我正在使用的 smtp 邮件服务器不需要客户端进行身份验证

编辑:当我使用这些设置时,我收到此错误

smtp.SMTPSenderRefused: Client was not authenticated
Run Code Online (Sandbox Code Playgroud)

email django smtp django-email django-settings

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

如何修复此错误:没有名为“allauth”的模块?

我想在 django API 中使用 allauth,但是当我安装它时,我遇到了一些错误,我通过 django.setup() 修复了它,之后,我收到错误,告诉我必须设置 DJANGO_SETTINGS_MODULE 现在我在管理中进行了设置。 py:

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
import django


def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'website.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    os.environ['DJANGO_SETTINGS_MODULE'] = 'website.settings'
    django.setup()
    main()
Run Code Online (Sandbox Code Playgroud)

但我得到了这个回溯:

Traceback (most …
Run Code Online (Sandbox Code Playgroud)

django django-settings facebook-login django-allauth

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

如果我只想使用标准用户模型,如何使用 AUTH_USER_MODEL

我看过几篇文章并阅读了有关如何在 settings.py 中进行设置的最佳实践的文档AUTH_USER_MODEL,但没有看到任何有关如何执行此操作的实际示例。我尝试了几种配置,但不断收到此错误:

django.core.exceptions.ImproperlyConfigured:AUTH_USER_MODEL 指的是尚未安装的模型“auth.User”

它甚至没有告诉我错误发生在哪里。以下是我尝试过的方法:

方法一:

from django.contrib.auth import get_user_model
User = get_user_model()
Run Code Online (Sandbox Code Playgroud)

然后我会像这样引用我的用户:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

方法二:

from django.contrib.auth.models import User
Run Code Online (Sandbox Code Playgroud)

两者都不起作用,而且我不确定如果我只想使用标准用户模型,AUTH_USER_MODEL我将如何在 settings.py 中设置。我根本没有自定义 User 对象。我假设类似,但我不确定。AUTH_USER_MODEL = 'django.contrib.auth.models.User'

现在我得到了这个:

AttributeError:“str”对象没有属性“_meta”

用户/表单.py

from django import forms
from django.conf import settings
from django.contrib.auth.forms import UserCreationForm
from .models import Profile


class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = settings.AUTH_USER_MODEL
        fields = ['username', 'email', 'password1', 'password2']


class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField() …
Run Code Online (Sandbox Code Playgroud)

python django django-settings django-auth-models

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

在Django中启动项目后,我应该将项目文件移动到父目录中吗?

运行后,django-admin.py startproject foobar它会创建一个父foobar目录和另一个foobar(同名)文件夹以及该manage.py文件.问题是 - 我应该将所有文件/foobar/foobar移入/foobar,只删除冗余目录?这个结构首先出现的原因是什么?

python django django-settings

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

Django日志记录:将发件人电子邮件地址从root @ localhost更改为其他内容

在我的settings.py中,我有以下日志配置.如果出现错误,我会收到来自root @ localhost的电子邮件.我的问题是我有几个项目,并希望所有错误消息发送到同一个电子邮件地址.但现在非常讨厌识别错误发生在哪个站点上,所以我想将root @ localhost中的发件人电子邮件地址替换为error@project-site.tld.这可能还是我要创建一些虚拟邮箱?

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'DEBUG',
            'class': 'django.utils.log.AdminEmailHandler'
        },
    'logfile': {
        'class': 'logging.handlers.WatchedFileHandler',
        'filename': '/var/log/django/proj_name.log'
        },
    },
'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'DEBUG',
        'propagate': True,
        },
    'django': {
        'handlers': ['logfile'],
        'level': 'DEBUG',
        'propagate': False,
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

django logging django-settings django-errors

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

在Django模板中获取家庭URL(域)的当前方法?

这很简单,但似乎没有提供。

基本上,如果我的网站是...

或非root用户安装

...我想django会知道这一点,并在模板中有一个常量。

我发现的解决方案涉及:

  1. 使用以下命令在settings.py中进行设置 SITE_URL =
  2. 在视图中参考settings.py。
  3. 最后使用{{ SITE_URL }}或其他方式在模板中访问它。

不是很

听起来不错,但是django不提供{{ GET_ME_THE_ROOT_URL }}参考吗?

抱歉,django已经训练我期待这样的好吃的东西。

只是说'如果我正在写一个框架,那是我要做的第一件事,除了在我的桌子旁边放一个小冰箱,里面装满了热钱包,还有一个微波炉,但距离很近但很安全。

python django django-templates django-settings

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