如何在Django应用中通过ISO国家代码获取货币符号?
更简便的国家代码转货币符号方案
嘿,你的需求其实挺常见的,当前用pycountry+forex-python的方案是可行的,但确实可以简化步骤,甚至用单库搞定,我给你梳理几个更简便的方式:
方案1:优化现有库的使用流程
你当前的代码绕了个弯——通过国家的numeric代码去查货币,其实pycountry的国家对象本身就带了currencies属性,可以直接拿到对应货币的alpha-3代码,省去中间一步:
import pycountry from forex_python.converter import CurrencyCodes code = "US" # 获取国家对象 country = pycountry.countries.get(alpha_2=code) # 多数国家只有一种货币,直接取第一个元素 currency_alpha3 = country.currencies[0] # 拿到货币符号 symbol = CurrencyCodes().get_symbol(currency_alpha3) print(symbol) # 输出 'US$'
这样代码更简洁,逻辑也更直接。
方案2:用单库搞定(推荐给已用国际化工具的Django项目)
如果你的Django项目已经在用babel做国际化(很多项目都会用),那直接用它的工具函数就能完成,不用额外依赖forex-python:
首先确保安装了babel:
pip install babel
然后代码:
from babel.numbers import get_currency_symbol import pycountry code = "US" country = pycountry.countries.get(alpha_2=code) currency_alpha3 = country.currencies[0] # 默认返回本地习惯的符号,比如US对应'$' symbol = get_currency_symbol(currency_alpha3) # 如果想要带国家代码的格式(比如'US$'),可以自己拼接 symbol_with_code = f"{code}${symbol}" print(symbol) # 输出 '$' print(symbol_with_code) # 输出 'US$'
方案3:用轻量专用库
如果不想依赖pycountry之外的大库,可以试试currency-symbols这个轻量工具,专门用来映射货币代码和符号:
安装:
pip install currency-symbols
代码:
from currency_symbols import CurrencySymbols import pycountry code = "US" country = pycountry.countries.get(alpha_2=code) currency_alpha3 = country.currencies[0] symbol = CurrencySymbols.get_symbol(currency_alpha3) print(symbol) # 输出 '$' # 同样,需要带国家代码的话自行拼接即可
小提醒
有些国家存在多种流通货币的情况(比如欧元区国家同时可能有本地货币),这时候你需要根据业务逻辑选择合适的货币(比如优先取官方货币),而不是直接取第一个元素哦。
内容的提问来源于stack exchange,提问作者Dawn T Cherian
相关产品推荐
相关产品推荐

