一个可重用的django应用程序,受etsy的启发,可以控制汇率和喜爱的语言代码
django-metasettings的Python项目详细描述
一个可重用的django应用程序,用于控制汇率和收藏夹 语言代码,灵感来自Etsy。
首先你需要在 open exchange rates输入汇率。
安装
要安装它,只需
pip install django-metasettings
将“元设置”添加到INSTALLED_APPS
INSTALLED_APPS = ( 'metasettings', )
如果要安装仪表板以允许用户选择语言 以及一种货币,你将不得不安装从这样的元设置的网址
# urls.py from django.conf.urls import patterns, include urlpatterns = patterns( '', (r'^', include('metasettings.urls')) )
您可以将适当的样式表添加到此仪表板视图中,并使用这种样式表 结果:
用法
要导入当前汇率,请运行
$ python manage.py sync_rates --app_id=openexchangesratesappid
要导入日期范围内的汇率,请运行
$ python manage.py sync_rates --app_id=openexchangesratesappid --date_start=2011-10-01 --date_end=2013-10-01
它将在两个日期之间的每个月进口汇率。
OpenExchange应用程序ID也可以存储在 OPENEXCHANGERATES_APP_IDdjango设置。
如果您可以将金额从一种货币转换为另一种货币:
frommetasettings.modelsimportconvert_amountconvert_amount('EUR','USD',15)# ~20 euros
默认情况下,如果要转换整数,它将返回完整的十进制数:
frommetasettings.modelsimportconvert_amountconvert_amount('EUR','USD',15,ceil=True)# ~20 euros
要使用客户端IP地址检索货币:
frommetasettings.modelsimportget_currency_from_ip_addressget_currency_from_ip_address('78.192.244.8')# EUR
我们正在使用GeoIP,它使您能够检索国家和 然后我们将国家与现有货币联系起来。
所以不要忘记导入一个新的geoip数据库,并确保有geoip路径 在你的设置中。
我们建议使用django-geoip-utils 它提供了一些帮助来操作geoip api。
货币字段
Django模型的货币字段,提供所有ISO4217货币作为选择。
CurrencyField基于django的CharField,提供了选择 对应于官方的ISO4217货币列表(默认 max_length第3页)。
使用CurrencyField考虑以下模型:
fromdjango.dbimportmodelsfrommetasettings.fieldsimportCurrencyFieldclassProject(models.Model):name=models.CharField(max_length=100)currency=CurrencyField()
任何Project实例都有一个currency属性,您可以使用该属性 获取项目货币的详细信息:
>>>project=Project(name='My project',currency='EUR')>>>project.currencyCurrency(code='EUR')>>>project.currency.label'Euro'>>>project.currency.symbol'€'>>>project=Project(name='My project',currency='USD')>>>project.currencyCurrency(code='USD')>>>project.currency.label'United States Dollar'>>>project.currency.symbol'$'>>>project.currency.trigram'USD'
这个对象(project.currency在示例中)是一个Currency实例, 如下所述。
使用blank_label为中显示的初始空白选项设置标签 表格:
currency = CurrencyField(blank_label='(select currency)')
灵感
- CurrencyField的灵感来源于CountryField伟大的django-countries