为django模型提供国家字段。

django-countries的Python项目详细描述


安哥拉国家

pypi versionBuildStatus覆盖状态

一个django应用程序,提供用于表单、标志的国家/地区选择 图标静态文件,以及模型的国家字段。

  • django rest framework django rest framework
    • django rest framework字段
    • 休息输出格式
  • 选项请求
  • 国家字段

    Django模型的国家字段,提供所有ISO 3166-1国家 选择.

    countryfield 基于django的 charfield ,提供了选择 对应于官方ISO 3166-1国家列表(默认 最大长度 共2个。

    使用 countryfield考虑以下模型

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()

    任何 个人 实例都有一个 国家 属性,您可以使用该属性 获取此人所在国家的详细信息:

    >>>person=Person(name='Chris',country='NZ')>>>person.countryCountry(code='NZ')>>>person.country.name'New Zealand'>>>person.country.flag'/static/flags/nz.gif'

    这个对象( person.country 在示例中)是一个 country 实例, 如下所述。

    使用空白标签设置初始空白选项的标签,如 表格:

    country=CountryField(blank_label='(select country)')

    多选

    此字段还允许选择多个国家(另存为逗号 分开的字符串)。该字段将始终输出 模式。例如:

    classIncident(models.Model):title=models.CharField(max_length=100)countries=CountryField(multiple=True)>>>forcountryinIncident.objects.get(title='Pavlova dispute').countries:...print(country.name)AustraliaNewZealand

    国家对象

    表示国家的对象,用两个字符实例化 国家代码、三字符代码或数字代码。

    它可以与其他对象进行比较,就好像它是一个包含 国家代码,当作为文本计算时,返回国家代码。

    < DL>
    名称
    包含完整的国家/地区名称。
    标志
    包含标志的url。如果你的页面可以有很多不同的标志 然后考虑使用 标志css 来避免过多的http请求。
    标记css

    输出将html元素显示为正确标志所需的css类 从包含所有标志的单个精灵图像中。例如:

    <link rel="stylesheet" href="{%static'flags/sprite.css'%}">
    <i class="{{country.flag_css}}"></i>

    对于多个标志分辨率,请改用sprite hq.css并添加 flag2x flag3x flag4x 类。例如:

    <link rel="stylesheet" href="{%static'flags/sprite-hq.css'%}">
    Normal: <i class="{{country.flag_css}}"></i>
    Bigger: <i class="flag2x {{country.flag_css}}"></i>

    您可能还想考虑使用aria标签来获得更好的 辅助功能:

    <i class="{{country.flag_css}}"
        aria-label="{%blocktranswithcountry_code=country.code%}{{country_code}} flag
        {%endblocktrans%}"></i>
    Unicode标志
    该国国旗的Unicode标志符号。目前在 iOS和OS X。请参见https://en.wikipedia.org/wiki/regional_indicator_symbol" rel="nofollow">https://en.wikipedia.org/wiki/regional_indicator_symbol 有关详细信息。
    代码
    这个国家的两个字母的国家代码。
    字母3
    这个国家的三个字母的国家代码。
    数字
    此国家/地区的数字国家/地区代码(整数)。
    数字填充
    作为三个字符0填充字符串的数字国家代码。

    国家选择程序

    包含一个小部件,可以在选择框之后显示标志图像 (选择更改时用javascript更新)。

    当您创建表单时,可以像normal一样使用此自定义小部件:

    fromdjango_countries.widgetsimportCountrySelectWidgetclassPersonForm(forms.ModelForm):classMeta:model=models.Personfields=('name','country')widgets={'country':CountrySelectWidget()}

    layout 文本参数传递给小部件,以更改 标志和小部件。默认布局为:

    '{widget}<img class="country-select-flag" id="{flag_id}" style="margin: 6px 4px 0" src="{country.flag}">'

    自定义窗体

    如果要在自定义表单中使用国家/地区,请使用模型字段的自定义 表单字段以确保国家/地区选项的可翻译字符串保留 延迟直到小部件呈现:

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    0

    对于非必需的表单字段,使用 countryfield(blank=true) ,以及 国家字段(空白"标签="(选择"国家" 项) 为 初始空白选项。

    如果您使用 希望在选择框后显示标志图像。

    从python获取国家信息

    使用django_countries.countries对象实例作为iso的迭代器 3166-1国家代码和名称(按名称排序)。

    例如:

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    1

    国家名称使用Django的标准翻译。 如果您想通过添加翻译来提供帮助,请访问 https://www.transifex.com/projects/p/django-countries/

    模板标记

    如果您的国家/地区代码存储在不同于国家/地区字段的位置 您可以使用模板标记来获取 country 对象,并可以访问所有 其属性:

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    2

    如果您需要一个国家列表,这里还有一个简单的标签:

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    3

    定制

    自定义国家/地区列表

    国家名称取自官方的ISO 3166-1列表。如果你的项目 需要使用替代名称,包括或排除特定的 然后,国家/地区使用 国家/地区覆盖设置。

    覆盖默认值的名称字典。这些值还可以使用 复杂字典格式

    请注意,您需要处理自定义国家/地区名称的翻译。

    将一个国家的名称设置为 会将其从国家列表中排除。 例如:

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    4

    如果您有应该使用的国家的特定列表,请使用 仅限国家

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    5

    或者要指定您自己的国家/地区名称,请使用字典或双元组列表 (字符串项将使用标准国家/地区名称):

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    6

    首先显示某些国家

    首先提供国家代码列表作为 国家设置,然后 将首先显示在国家列表中(按指定的顺序) 按字母数字排序的国家。

    如果还想对这些初始国家进行排序,请设置 国家优先排序 设置为

    默认情况下,在 字母数字排序列表。如果你想重复,设置 国家/地区优先重复设置为

    最后,您可以选择使用空的 通过提供选项标签作为 国家/地区优先中断设置进行选择。

    自定义标志URL

    可以使用 国家标志url设置该标志的url 图像资源。默认为:

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    7

    URL可以是相对于静态URL设置的,也可以是绝对URL。

    该位置使用python的字符串格式进行解析,并通过 以下参数:

    < Buff行情>
    • 代码
    • 代码_upper

    例如: 国家标志url= 'flags/16x10/{code\u upper}.png'

    不做任何检查以确保静态标志实际存在。

    或者,您可以在特定的countryfield上指定不同的url

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    8

    单字段自定义

    要自定义单个字段,而不是依赖于项目级设置, 创建一个覆盖设置的 国家 子类。

    若要重写设置,请为该类指定一个与小写字母匹配的属性 不带 国家前缀的设置。

    然后在一个字段中引用这个类。例如,这个 countryfield 使用仅包含八国集团成员国的自定义国家列表:

    fromdjango.dbimportmodelsfromdjango_countries.fieldsimportCountryFieldclassPerson(models.Model):name=models.CharField(max_length=100)country=CountryField()
    9

    复杂字典格式

    对于 国家/地区和 国家/地区覆盖,您还可以提供 字典而不仅仅是国家名称的可翻译字符串。

    字典中的选项是:

    < DL>
    名称 名称 (必需)
    此国家的单个可翻译名称或多个名称的列表 可翻译的名字。如果使用多个名称,则首选第一个名称 当首先使用 国家时 国家名称
    字母3 (可选)
    一个iso 3166-1三个字符的代码(或一个空字符串,使现有的 此国家/地区的代码。
    数字 (可选)
    ISO 3166-1数字国家代码(或 使现有代码无效 为了这个国家。数字代码900到999由 用户分配标准。

    django rest框架

    Django国家船舶使用 countryfieldmixin 与drf序列化程序兼容的模型字段。使用以下命令 与模型序列化程序混合:

    >>>person=Person(name='Chris',country='NZ')>>>person.countryCountry(code='NZ')>>>person.country.name'New Zealand'>>>person.country.flag'/static/flags/nz.gif'
    0

    这个mixin同时处理标准和多选项字段。

    django rest framework字段

    对于较低级别的使用(或不处理模型字段时),可以使用 包括 countryfield 序列化程序字段。例如:

    >>>person=Person(name='Chris',country='NZ')>>>person.countryCountry(code='NZ')>>>person.country.name'New Zealand'>>>person.country.flag'/static/flags/nz.gif'
    1

    您可以选择使用 countries 参数将字段实例化为 指定一个自定义的国家实例。

    rest输出格式

    默认情况下,该字段只输出国家代码。如果你愿意 有更详细的输出,用 country_dict=true初始化字段, 这将导致字段具有以下输出结构:

    >>>person=Person(name='Chris',country='NZ')>>>person.countryCountry(code='NZ')>>>person.country.name'New Zealand'>>>person.country.flag'/static/flags/nz.gif'
    2

    代码或这个dict输出结构都可以作为输入 与参数的值无关。

    选项请求

    当您针对资源请求选项时(使用drf 元数据支持 ) 这些国家将在答复中作为选择返回:

    >>>person=Person(name='Chris',country='NZ')>>>person.countryCountry(code='NZ')>>>person.country.name'New Zealand'>>>person.country.flag'/static/flags/nz.gif'
    3

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java如何使用MVC设计模式观察嵌套对象   java将多个客户端连接到服务器   合并Java Web应用程序   Spring Security中未捕获java AuthenticationSuccessEvent   java Firebase JSON到Arraylist内部的Arraylist,存在对象问题   在Java15的sealedclasses特性中,final类和非密封类之间有什么区别?   java我可以使用数组。copyOf制作二维数组的防御副本?   java球不会在屏幕上移动   Java类如何在同一个文件中包含两个类?   java使用“Character.isWhiteSpace”删除所有空白   java阻止在RealmList中保存时创建领域对象   如何仅在ConnectionFactory上使用Java JMS身份验证   spring可以强制java对象在运行时实现接口吗?   socket无法在JAVA中使用TCP启用双工模式通信