【问题标题】:Adding list via queryset to ALLOWED_HOSTS通过查询集将列表添加到 ALLOWED_HOSTS
【发布时间】:2018-02-04 14:13:48
【问题描述】:

我在 UserProfile 类中有一个对象实例,它们上面有一个“网站”字段。我想从我的数据库中的这个 UserProfile 表中获取这个网站列表,并将它们附加到 Django 的 settings.py 文件中的 ALLOWED_HOSTS 列表中。我已经弄清楚如何从数据库中获取网站列表:

   list(UserProfile.objects.all().values_list('website', flat=True)

此时,我不知道如何将此列表与 settings.py 文件中的 ALLOWED_HOSTS 列表连接起来。任何建议将不胜感激!

【问题讨论】:

    标签: django django-settings


    【解决方案1】:

    您可以在ALLOWED_HOSTS 中使用通配符

    '*' 值将匹配任何内容;在这种情况下,您有责任提供自己对 Host 标头的验证(可能在中间件中;如果是这样,则此中间件必须首先在 MIDDLEWARE 中列出)。

    否则,您应该可以通过

    将列表添加到设置中
    from django.conf import settings
    settings.ALLOWED_HOSTS.append(list(set(website_list)))
    

    website_list 是一个 URL 列表。

    编辑以添加使用列表设置为列表转换以确保不存在重复的主机值。

    【讨论】:

    • 谢谢。我知道通配符,但如果可能,我想使用 ALLOWED_HOSTS 提供验证。
    • 谢谢!我会将 2 行代码添加到哪个文件?
    • @JasonHoward 我真的不能说,因为我不知道你的项目布局。如果您在该列表中有大量主机,我能想到的唯一问题是速度减慢。您可以在github.com/django/django/blob/master/django/http/… 看到检查实际发生的位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2017-06-17
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多