Как исправить ошибку CORS при использовании функции Models.Pointfield в GeoDjango Framework?
Пользователь должен нажать на местоположение на карте, используя Pointfield. Вот мой код для моделей
class Marker(models.Model):
"""A marker with name and location."""
Market_Place_Name = models.CharField(max_length=255)
GPS_Location = models.PointField()
Http_Location = models.CharField(max_length=255)
def __str__(self):
"""Return string representation."""
return self.name
Я получаю сообщение об ошибке следующего содержания, и карта также не загружается, как показано ниже:
Я пробовал добавить следующие коды в setup.py проекта geodjango, но, похоже, ничего не работает
INSTALLED_APPS = ['corsheaders']
MIDDLEWARE = ["corsheaders.middleware.CorsMiddleware",'django.middleware.security.SecurityMiddleware']
CORS_ALLOWED_ORIGINS = [
"http://localhost:8000",
"http://127.0.0.1:8000"]
Это проблема OSM, ресурс, который вы пытаетесь загрузить (например, https://c.tile.openstreetmap.org/3/6/5.png
), не имеет соответствующих заголовков.
У меня была такая же проблема, и в итоге я использовал модель по умолчанию GeoModelAdmin, которая использует OpenLayers.
PS: В django 4.0 OSMGeoAdmin
устарел в пользу GISModelAdmin:
class OSMGeoAdmin: Подкласс GeoModelAdmin, который использует проекцию Сферического Меркатора с плитками уличных данных OpenStreetMap. Утратил актуальность с версии 4.0: Этот класс устарел. Вместо него используйте GISModelAdmin.
.