django应用程序的mac地址模型和表单字段。

django-macaddress的Python项目详细描述


Build Statushttps://img.shields.io/pypi/v/django-macaddress.svg

django的mac地址模型和表单字段

我们使用netaddr来解析和验证mac地址。测试不是 完成了。

欢迎使用修补程序:http://github.com/django-macaddress/django-macaddress

开始

settings.macaddress默认语言

要指定演示文稿的默认方言(和存储,请参见下文),请指定:

settings.MACADDRESS_DEFAULT_DIALECT = 'module.dialect_class'

其中,指定的值是由父python模块名组成的字符串 还有孩子的方言类名。例如:

settings.MACADDRESS_DEFAULT_DIALECT = 'netaddr.mac_eui48'

ps:默认情况下将使用macaddress.mac_linux的旧默认值(大写并除以“:”)。

如果在包模块中定义了自定义方言,则需要定义 类或导入到包的__init__.py

default_dialectformat_mac

要获取项目的默认方言,请导入并调用default_dialect函数:

>>> from macaddress import default_dialect

>>> dialect = default_dialect()

可以选择使用netaddr.EUI类实例作为参数调用此函数。如果没有 默认值在settings中定义,它将返回提供的EUI对象的方言。

format_mac函数接受一个EUI实例和一个方言类(netaddr.mac_eui48或 子类)作为其参数。方言类可以指定为字符串,方式与 settings.MACADDRESS_DEFAULT_DIALECT

>>> from netaddr import EUI, mac_bare
>>> from macaddress import format_mac

>>> mac = EUI('00:12:3c:37:64:8f')
>>> format_mac(mac, mac_bare)
'00123C37648F'
>>> format_mac(mac, 'netaddr.mac_cisco')
'0012.3c37.648f'

macaddressfield(modelfield)

这是一个使用macaddressfield的示例模型:

from macaddress.fields import MACAddressField

class Computer(models.Model):
    name = models.CharField(max_length=32)
    eth0 = MACAddressField(null=True, blank=True)
    ...

默认行为是在数据库中存储mac地址为bigInteger。 如果您愿意,可以将该值存储为字符串(例如,为了方便 子字符串搜索),可以指定integer=False,值将被存储 作为字符串:

class Computer(models.Model):
    name = models.CharField(max_length=32)
    eth0 = MACAddressField(blank=True, integer=False)
    ...

如果要在存储为字符串的macaddressfield上设置unique=True,则需要 设置null=True并在forms.ModelForm类上创建自定义clean_<foo>方法 当提供的值是''(空字符串)时返回None的每个macaddressfield:

from .models import Computer

class ComputerForm(forms.ModelForm):
    class Meta:
        model = Computer

    def clean_eth0(self):
        return self.cleaned_data['eth0'] or None

在运行managy.py syncdb之后,应避免更改integer的值, 除非您使用的是架构迁移解决方案,如south或django的内置迁移。

待办事项

  • 将mac作为字符串存储在数据库中时,添加对部分字符串查询的更大支持。
  • <> LI>在混合字符串和整数存储类型时,添加自定义验证器来检查重复的MACS。
  • 添加用于转换到默认字符串存储的弃用警告和时间线。

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

推荐PyPI第三方库


热门话题
java如何在构造函数外部添加鼠标侦听器   java如何使用比较器对列表进行排序以正确排序空值?   javajavax。由于javax,邮件“535.7.3身份验证失败”。邮件升级(v1.3.1至v1.5.2)   java将arraylist流到固定的二维数组中并打印?   RecyclerView适配器上的java上下文   java如何为此Twitter API为KafkaProducer建立连接   java Spring安全性重写WebSecurity配置适配器的配置(AuthenticationManagerBuilder)是否会影响全局应用程序?   线程“awteventque0”NullPointerException中的java异常   if条件中的null值和null指针异常java   java树集<Object>允许相同类型的多个对象   java定义类;我认不出   字符串java replaceAll()   JAVAutil。scanner(Java)读取文件时如何跳过空格?   java在swing中关闭flash屏幕   java在Wildfly 16中的应用程序中加载pk12文件   有没有工具可以自动生成屏幕抓取的Java代码   创建意图时,java方法getParcelableExtra()返回null   将数据从java传递到jsp   java Android Studio |永久保存布局