一个可重用的Django应用程序,用于控制货币汇率和喜欢的语言代码,受etsy启发。
项目描述
一个可重用的Django应用程序,用于控制货币汇率和喜欢的语言代码,受etsy启发。
首先您需要在open exchange rates上申请一个应用ID以导入汇率。
安装
要安装它,只需
pip install django-metasettings
将‘metasettings’添加到您的INSTALLED_APPS
INSTALLED_APPS = ( 'metasettings', )
如果您想安装仪表板以允许用户选择语言和货币,您将不得不安装来自metasettings的urls,如下所示
# 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
它将为两个日期之间的每个月份导入汇率。
OpenExchangeRates的应用ID也可以存储在Django设置OPENEXCHANGERATES_APP_ID中。
如果您要将一种货币的金额转换为另一种货币
from metasettings.models import convert_amount
convert_amount('EUR', 'USD', 15) # ~20 euros
默认情况下,它将返回一个完整的十进制数,如果您想要一个转换后的整数
from metasettings.models import convert_amount
convert_amount('EUR', 'USD', 15, ceil=True) # ~20 euros
要获取客户端IP地址的货币
from metasettings.models import get_currency_from_ip_address
get_currency_from_ip_address('78.192.244.8') # EUR
我们正在使用GeoIP,这使您能够检索国家,然后我们将国家与现有的货币联系起来。
所以,别忘了导入新的GeoIP数据库,并确保在设置中包含GEOIP_PATH。
我们建议使用django-geoip-utils,它提供了一些操作GeoIP API的帮助器。
CurrencyField
这是一个为Django模型提供的货币字段,它提供了所有ISO 4217货币的选择。
CurrencyField基于Django的CharField,提供与官方ISO 4217货币列表对应的选项(默认最大长度为3)。
考虑以下使用CurrencyField的模型
from django.db import models
from metasettings.fields import CurrencyField
class Project(models.Model):
name = models.CharField(max_length=100)
currency = CurrencyField()
任何Project实例都将有一个可用的currency属性,您可以使用它来获取项目货币的详细信息
>>> project = Project(name='My project', currency='EUR')
>>> project.currency
Currency(code='EUR')
>>> project.currency.label
'Euro'
>>> project.currency.symbol
'€'
>>> project = Project(name='My project', currency='USD')
>>> project.currency
Currency(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深受伟大的django-countries中的CountryField的启发