跳转到主要内容

django-cities的简单替代方案

项目描述

https://secure.travis-ci.org/yourlabs/django-cities-light.svg?branch=master https://img.shields.io/pypi/dm/django-cities-light.svg https://img.shields.io/pypi/v/django-cities-light.svg https://codecov.io/github/yourlabs/django-cities-light/coverage.svg

django-cities-light – 简单的 django-cities 代替方案

此插件提供模型和命令,以便将国家、子地区、地区/州和城市数据导入您的数据库。

数据来自 GeoNames,包含城市、子地区、地区/州和国家。

此应用程序不需要空间查询支持。

此应用程序非常简单,如果您想创建一个简单的地址簿,例如,它非常有用。如果您打算构建一个功能齐全的空间数据库,则应使用 django-cities

要求

  • Python >= 3.8

  • Django >= 3.2

  • MySQL 或 PostgreSQL 或 SQLite。

是的,由于某种原因,曾经可以在 MySQL 上运行的代码(但不是没有痛苦 xD)现在不再工作。因此,我们现在使用来自 Django 1.6 的 django.db.transaction.atomic 来仅支持 MySQL quacks。

功能

  • GraphQL 支持

  • 内置管理支持

  • Rest-Framework 支持

  • Ajax Select 查找支持

升级

查看 CHANGELOG。

安装

安装 django-cities-light

pip install django-cities-light

或开发版本

pip install -e git+git@github.com:yourlabs/django-cities-light.git#egg=cities_light

cities_light 添加到您的 INSTALLED_APPS

配置过滤器以排除您不希望的数据,例如。

CITIES_LIGHT_TRANSLATION_LANGUAGES = ['fr', 'en']
CITIES_LIGHT_INCLUDE_COUNTRIES = ['FR']
CITIES_LIGHT_INCLUDE_CITY_TYPES = ['PPL', 'PPLA', 'PPLA2', 'PPLA3', 'PPLA4', 'PPLC', 'PPLF', 'PPLG', 'PPLL', 'PPLR', 'PPLS', 'STLMT',]

现在,运行迁移,它将仅创建未禁用的模型表

./manage.py migrate

数据导入/更新

最后,使用以下命令填充您的数据库

./manage.py cities_light

此命令有很好的文档,请使用以下方法咨询帮助

./manage.py help cities_light

默认情况下,更新过程尝试更新所有字段,包括国家/地区/子地区/城市缩写。但是,有一个选项可以保持它们完好无损

./manage.py cities_light --keep-slugs

获取更多城市

配置参数 CITIES_LIGHT_CITY_SOURCES 的默认值为 http://download.geonames.org/export/dump/cities15000.zip,其中包含人口超过 15000 的城市,如果您需要加载人口较少的城市,请使用另一个来源。有关可用来源的列表,请在此处查看:http://download.geonames.org/export/dump/readme.txt

使用 fixtures

Geonames.org 每天更新一次,其完整导入相当慢,因此如果您想多次导入相同的数据(例如在不同的服务器上),则使用辅助管理命令的 fixtures 很方便。

./manage.py cities_light_fixtures dump
./manage.py cities_light_fixtures load

为了节省空间,JSON fixtures 使用 bzip2 压缩,可以从任何 HTTP 服务器或本地文件系统获取。

请使用以下方法咨询帮助

./manage.py help cities_light_fixtures

开发

创建开发虚拟环境(您需要在您的系统上安装 tox)

tox -e dev
source .tox/dev/bin/activate

要运行测试项目,请将项目文件夹作为当前目录运行

export PYTHONPATH="${PYTHONPATH}:/app/src"
docker run  -d postgres -p 5432:5432

然后运行完整导入

test_project/manage.py migrate
test_project/manage.py cities_light

有几个环境变量会影响项目设置(如 DB_ENGINE 和 CI),您可以在 test_project/settings.py 中找到它们的所有内容。

例如,要更改数据库引擎,您可以运行

export DB_ENGINE=postgresql
export DB_HOST=192.168.0.118
export DB_NAME=app
export DB_USER=postgres
export DB_PORT=5432

要运行测试套件,您需要安装带有密码登录的 postgresql 或 mysql,或者仅使用 sqlite。否则,尝试创建/删除数据库的测试将失败。

运行完整测试套件

tox

要运行特定环境中的测试,请使用以下命令

tox -e py37-django31-sqlite

要运行特定测试,请使用以下命令

tox -e py37-django31-sqlite -- cities_light/tests/test_form.py::FormTestCase::testCountryFormNameAndContinentAlone

要更快地运行,您可以切换到特定的 tox 虚拟环境

source .tox/py37-django18-sqlite/bin/activate
CI=true test_project/manage.py test cities_light.tests.test_form.FormTestCase.testCountryFormNameAndContinentAlone

如果您想构建文档,请使用以下步骤

source .tox/dev/bin/activate
cd docs
make html

待办事项

资源

您可以订阅邮件列表,提问或只是获取软件包更新信息。

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码分布

django-cities-light-3.10.1.tar.gz (103.7 kB 查看哈希值)

上传时间 源代码

构建分布

django_cities_light-3.10.1-py3-none-any.whl (121.7 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面