2014-02-10 80 views
1

Django的localflavor貌似localflavor的一般用法是進口國的具體包:國際網站

from localflavor.nz.forms import NZRegionSelect

如果我有一個支持多個國家的網站?是否有一般代理是國家無關,是這樣的:

from localflavor.autodetect.forms import RegionSelect

+0

一種選擇是根據一些標準導入 - 如設置.. – karthikr

+0

@karthikr沒錯,我在想這個,但是在這個階段我們不確定我們是否有基於位置的網絡服務器。 –

回答

1

__import__會做的伎倆:

def get_region_select(country_code): 
    module_path = 'django.contrib.localflavor.{}'.format(country_code) 
    try: 
     module = __import__(module_path, fromlist=['forms']) 
    except ImportError: 
     return None 

    fieldname = '{}RegionSelect'.format(country_code.upper()) 
    if hasattr(module.forms, fieldname): 
     return getattr(module.forms, fieldname)() 
    return None 

摘自:http://codeinthehole.com/writing/validating-international-postcodes-in-django/

然後,在你的模板,你每次更換國家時都必須重新加載頁面,並在視圖中執行類似操作:

form.fields['region'].widget = get_region_select(country) 

由於不同的地區會有不同的選擇。