Django项目的可管理国家列表

emencia.django.countries的Python项目详细描述


一个Django应用程序,它包含可以按优先级顺序显示的世界国家列表。

用于需要订购国家/地区列表的表单或模型。

Requires

  • setuptools
  • Django>;=1.4(应与django 1.8及更高版本兼容);

Install

首先安装软件包:

pip install emencia.django.countries

在“设置”中将其添加到已安装的django应用程序中:

INSTALLED_APPS=(...'emencia.django.countries',...)

最后运行django命令migrate来安装应用程序数据库表,这也将用各国的初始数据填充Country模型。

Usage

默认情况下,当加载fixture时,所有国家的级别都为0, 默认值,按字母顺序显示。

>>>fromemencia.django.countries.modelsimportCountry>>>Country.objects.all()[<Country:Afghanistan>,<Country:Albania>,<Country:Algeria>,'...(remaining elements truncated)...']

所以如果你不想把阿富汗作为你名单上的第一个国家, 对于所需的所有国家/地区,level属性都有一个较高的值。

现在,如果要检索您订购的国家/地区列表,请执行以下操作:

>>>france=Country.objects.get(iso='FR')>>>france.level=100>>>france.save()>>>Country.objects.all()[<Country:France>,<Country:Afghanistan>,<Country:Albania>,'...(remaining elements truncated)...']

但是,如果您只需要一个具有level属性集的国家的简短列表,则可以执行以下操作:

>>>Country.objects.leveled()[<Country:France>]

这将只返回级别值不同于0的国家。

Template Context Processors

有时,让所有国家都在呈现模板的上下文中是有用的, 因此提供了一个模板上下文处理器。

>>>TEMPLATE_CONTEXT_PROCESSORS=(...# Your template context processors...'emencia.django.countries.context_processors.countries',...)

此模板上下文处理器在上下文中提供2个变量:

  • 国家/地区列表
  • 国家排名

Template tags

但总的来说,把所有国家都放在这个背景下是浪费资源, 因为它为每个请求发出一个数据库请求,所以已经实现了模板标记。

在模板中,要获取国家列表,只需执行此操作。

{% load countries_tags %}

{% get_countries %}

它将在模板的本地上下文中加载名为countries的变量中的国家列表 但是,如果要更改此变量的名称,请使用以下语法。

{% get_countries as MY_COUNTRIES %}

如果您只想拥有国家的简短列表,请使用此标记。

{% get_countries_leveled as MY_COUNTRIES %}

当然,同样的语法也适用于这个标记。

Version 0.2.1 - 2015/12/10

  • 修复了setup.py
  • HISTORY.rst的错误路径

Version 0.2.0 - 2015/12/10

  • 确保与Django>=1.7
      兼容
    • 使用get_querysetmethod;
    • 在模型管理器中添加了兼容性支持
    • 添加了django migration;
    • 现在从数据迁移加载初始数据固定装置,因为Django>=1.7不再自动执行此操作;
  • 更新setup.py以获得更好的包分类器和包信息;

Version 0.1.1 - 2013/09/26

  • 修复缺少fixture数据文件规则的包清单;

Version 0.1 - 2013/05/03

  • 作为包首次发布;

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

推荐PyPI第三方库


热门话题
javascript问题:通过URL用网站数据填充Textview   java TabLayout Android,如何用几个标签填充整个屏幕宽度,并用大量标签滚动?   Eclipse Java运行的文件不再存在于我的工作区中   安装两个Java版本时,使用Java的windows链接不起作用   java将多个图形添加到单个JPanel   java Kafka ConsumerFactory,带有两个Desiarizer   使用反射更改java类超类   当一致性测试失败时,java有没有办法让堆栈跟踪显示在控制台中   java映射到基元类型的HashMap的快速替代方案是什么?   java关闭一个jframe所有剩余的打开jframe都将关闭。   java为什么不推荐“使用getString()获取设备标识符”?   java值比较和值赋值之间有什么性能差异吗?   Java实体数组到JavaScript数组   java使用流将一个列表转换为另一个列表   在JTree中保存对象,但更改显示的名称(java swing)?   java“Hello world”Android应用程序,文件尽可能少,没有IDE,只有文本编辑器   java在方法之间传递值   java如何为项目数组创建ParseQuery?