奥斯卡的扩展包括商店
django-oscar-stores的Python项目详细描述
这是django-oscar的扩展,添加了对存储的支持。它 提供:
- 使用谷歌地图进行地理编码的商店定位页面。它还支持使用 显示最近商店的浏览器位置。
- 存储详细信息页面,包括营业时间
- 门店分组
- 用于管理商店的仪表板
它具有高度的可扩展性,可作为建筑复杂的基础。 在oscar站点中存储功能。
依赖关系
GeoDjango被使用,因此需要空间数据库。我们推荐Postgis。 Django的文档包括一些installation instructions,尽管它是著名的 因为你很狡猾。
spatialite是另一种选择,尽管设置起来可能很棘手。在ubuntu上, 您可以执行以下操作:
$ sudo apt-get install spatialite-bin libspatialite3 libgeos++-dev libgdal-dev libproj0
虽然不支持c,但也需要pysqlitepython包 默认情况下为扩展名。要解决此问题,有两个选项:
- 下载软件包,编辑setup.cfg以启用C扩展并安装:
$ pip install pysqlite --no-install
$ vim $VIRTUAL_ENV/build/pysqlite/setup.cfg
$ pip install pysqlite
- 使用自定义分支:
$ pip install git+git://github.com/tinio/pysqlite.git@extension-enabled#egg=pysqlite
安装
首先,确保使用的是空间数据库并安装了django oscar。
安装软件包:
$ pip install django-oscar-stores
然后将stores添加到INSTALLED_APPS。现在更新根目录urls.py:
fromdjango.views.i18nimportJavaScriptCatalogfromoscar.appimportshopfromstores.appimportapplicationasstores_appfromstores.dashboard.appimportapplicationasdashboard_appurls=[# basic configuration for Oscarurl(r'',shop.urls),# adds URLs for the dashboard store managerurl(r'^dashboard/stores/',dashboard_app.urls),# adds URLs for overview and detail pagesurl(r'^stores/',stores_app.urls),# adds internationalization URLsurl(r'^jsi18n/$',JavaScriptCatalog.as_view(),name="javascript-catalogue"),]
您还需要下载GeoIP data files并将GEOIP_PATH设置为指向 合适的目录。
设置
- GOOGLE_MAPS_API_KEY(默认:未设置)。地图API密钥,用于地图和地理代码API。 你必须提供这把钥匙。
- STORES_GEOGRAPHIC_SRID(默认值:3577)。这是用来表示距离的 计算。有关详细信息,请参见http://spatialreference.org。
- STORES_GEODETIC_SRID(默认值:4326)。
- STORES_MAX_SEARCH_DISTANCE(默认值:无)。此筛选器存储 按距离查询。可以使用距离对象设置单位:
fromdjango.contrib.gis.measureimportD# Maximal distance of 150 milesSTORES_MAX_SEARCH_DISTANCE=D(mi=150)# Maximal distance of 150 kilometersSTORES_MAX_SEARCH_DISTANCE=D(km=150)
贡献
repo中有一个沙盒站点,它是一个示例oscar项目,使用 商店分店。设置为:
$ make sandbox
然后使用以下命令获取geoip文件:
$ make geoip
这将加载一个fixture,该fixture为超级用户提供测试仪表板的功能:
email: superuser@example.com username: superuser password: testing
使用以下命令运行测试:
$ pytest
许可证
django-oscar-stores在许可的New BSD license下释放。