Django Недопустимый заголовок HTTP_HOST: 'testerver'. Возможно, вам придется добавить u'testserver 'в ALLOWED_HOSTS

Я начал изучать Django, я нахожусь в середине реализации функции "Тестировать представление". Когда я использую test Client в оболочке, исключение произошло следующим образом.

Недопустимый заголовок HTTP_HOST: 'testerver'. Возможно, вам придется добавить u'testserver 'в ALLOWED_HOSTS.

Я запускаю команду в оболочке следующим образом.

>>> from django.test.utils import setup_test_environment
>>> setup_test_environment()
>>> from django.test import Client
>>> client = Client()
>>> response = client.get('/')
>>> response.status_code
400

В учебнике должно появиться 404, но я получаю 400. Когда я продолжаю выполнение команды следующим образом, это же исключение произошло.

>>> response = client.get(reverse('polls:index'))
>>> response.status_code
400

но результат должен быть 200. Я думаю, я должен объявить ALLOWED_HOSTS в settings.py, но как я могу? Я запускаю сервер на localhost, используя $python manage.py runningerver.

Я хочу знать причину и решение.

Ниже приведен параметр settings.py.

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = '8v57o6wyupthi^#41_yfg4vsx6s($1$x0xmu*95_u93wwy0_&u'
DEBUG = True
ALLOWED_HOSTS = [127.0.0.1,'localhost']
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
]
....    (MIDDLEWARE)
ROOT_URLCONF = 'tutorial.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'tutorial.wsgi.application'
....    (DATABASES, AUTH_PASSWORD_VALIDATORS)
LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

Ответ 1

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

скажи это так

Перезагрузите ваш сервер после

Ответ 2

ALLOWED_HOSTS = ['XXX.iptime.org', 'localhost', '127.0.0.1', 'testserver']


# Application definition

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Ответ 3

Вы должны отредактировать его так:

ALLOWED_HOSTS = [     '172.0.0.1',      "Локальный",     'TestServer', ]

Ответ 4

settings.py находится в режиме только для чтения

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

это как сохранить

Ответ 5

Помимо правильных ответов, есть важная проверка, о которой вам нужно помнить. Установка ALLOWED_HOSTS с одним значащим кортежем все равно выдаст вам ту же ошибку, например, если вы установите это так:

ALLOWED_HOSTS=('testserver')

Это не работает, потому что вы, возможно, хотели сделать это кортежем, но на самом деле это строка в Python, да, это странно, но верно! Вы можете прочитать больше о кортежах здесь: кортежи.

Если вы хотите сделать его кортежем, вам нужно добавить запятую вот так:

ALLOWED_HOSTS=('testserver',)

Это работает как ожидалось.