我有一个class1需要继承2个不同的元类,即Meta1和abc.ABCMeta
目前的实施:
Meta1的实现:
class Meta1(type):
def __new__(cls, classname, parent, attr):
new_class = type.__new__(cls, classname, parent, attr)
return super(Meta1, cls).__new__(cls, classname, parent, attr)
Run Code Online (Sandbox Code Playgroud)
class1Abstract的实现
class class1Abstract(object):
__metaclass__ = Meta1
__metaclass__ = abc.ABCMeta
Run Code Online (Sandbox Code Playgroud)
mainclass的实现
class mainClass(class1Abstract):
# do abstract method stuff
Run Code Online (Sandbox Code Playgroud)
我知道两次实现两个不同的元是错误的.
我改变了加载metclass的方式(几次尝试),我得到了这个TypeError:调用元类库时出错
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
Run Code Online (Sandbox Code Playgroud)
我的想法用完了......
EDITED 1我尝试了这个解决方案,但是mainClass不是class1Abstract的一个实例
print issubclass(mainClass, class1Abstract) # true
print isinstance(mainClass, class1Abstract) # false
Run Code Online (Sandbox Code Playgroud)
class1Abstract的实现
class TestMeta(Meta1):
pass
class …Run Code Online (Sandbox Code Playgroud) 我正在尝试将django验证器 1.9与django rest框架序列化器集成.但序列化的"用户"(django rest框架)与django验证器不兼容.
这是serializers.py
import django.contrib.auth.password_validation as validators
from rest_framework import serializers
class RegisterUserSerializer(serializers.ModelSerializer):
password = serializers.CharField(style={'input_type': 'password'}, write_only=True)
class Meta:
model = User
fields = ('id', 'username', 'email, 'password')
def validate_password(self, data):
validators.validate_password(password=data, user=User)
return data
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
user.is_active = False
user.save()
return user
Run Code Online (Sandbox Code Playgroud)
我设法得到MinimumLengthValidator和NumericPasswordValidator正确,因为两个函数验证都不使用'user'进行验证.源代码在这里
摘自django源代码:
def validate(self, password, user=None):
if password.isdigit():
raise ValidationError(
_("This password is entirely numeric."),
code='password_entirely_numeric',
)
Run Code Online (Sandbox Code Playgroud)
对于像UserAttributeSimilarityValidator这样的其他验证器,该函数在验证中使用另一个参数'user'('user'是django用户模型,如果我没错的话)
摘自django源代码:
def validate(self, password, user=None):
if not user: …Run Code Online (Sandbox Code Playgroud) 将JWT作为电子邮件中的激活URL有多安全?
这是django和django休息框架.我有2个型号:用户和手机.
第一个问题:
我希望能够在1个单独的api更新响应中更新用户数据(电子邮件)和电话数据(电话号码).电话号码可以是0或很多.好吧,就像partial = True一样.如果用户只想更新电话号码,请不要更新电子邮件,反之亦然.
附加信息:在注册时,不包括电话.只是基本的用户信息(姓氏,名字,电子邮件,密码).注册完成后,手机只能在用户个人资料表格中更新.用户配置文件表单实际上链接到多个模型,即用户和电话
第二个问题:
如何序列化多个phone_numbers并保存到db?
class User(AbstractBaseUser):
email = models.EmailField(unique=True, default='')
USERNAME_FIELD = 'email'
class Phone(models.Model):
phone_number = models.CharField(max_length=10)
owner = models.ForeignKey(User)
--------------------------------------
class UserSerializer(serializers.ModelSerializer):
phone_number = PhoneSerializer(required=False, many=True)
class Meta:
model = User
fields = ('email, 'phone_number')
class PhoneSerializer(serializers.ModelSerializer):
class Meta:
Model = Phone
fields = ('phone_number')
Run Code Online (Sandbox Code Playgroud)
html表单在电话号码字段中会有加号,表示可以添加新的电话号码.例子就在这里
email : admin@admin.com
phone number: 23423432423
(add more)
phone number: 3423423423
(add more)
...
Run Code Online (Sandbox Code Playgroud)
预期的json
{
'email': 'email@email.com',
'phone_number': '32432433223234'
}
Run Code Online (Sandbox Code Playgroud)
或者如果添加了许多电话号码
{
'email': 'email@email.com',
'phone_number': '32432433223234', …Run Code Online (Sandbox Code Playgroud) 我使用grep在temporaryF文件和arrayWarning之间返回不匹配的数组
my @c =grep!${{map{$_,1}@temporaryF}{$_},@arrayWarning;
Run Code Online (Sandbox Code Playgroud)
在@c里面有很多行例如:
Sun Sep 30 00:05:55 fibre channel DENY forever
Sun Sep 30 00:06:55 fibre channel ROOT cause
Sun Sep 30 00:08:55 fibre channel ROOT cause
Sun Sep 30 00:10:55 fibre channel ROOT cause
Sun Sep 30 00:20:55 fibre channel DANN
Sun Sep 30 00:30:55 fibre channel DANN
Run Code Online (Sandbox Code Playgroud)
你可以看到ROOT在@c中发生了3次.如何迭代@c仅输出最新出现的ROOT - > Sun Sep 30 00:10:55光纤通道ROOT而不是其他重复行.
所以它会变成:
Sun Sep 30 00:05:55 fibre channel DENY forever
Sun Sep 30 00:10:55 fibre channel ROOT cause
Sun Sep 30 00:30:55 fibre …Run Code Online (Sandbox Code Playgroud) 我将AbstractBaseUser与CustomPermissionsMixin一起使用.CustomPermissionsMixin与django PermissionsMixin相同,不同之处在于我为user_permissions和groups更改了related_name和related_query_name,因此它不会与django PermissionsMixin related_name冲突
@python_2_unicode_compatible
class CustomPermissionsMixin(models.Model):
"""
A mixin class that adds the fields and methods necessary to support
Django's Group and Permission model using the ModelBackend.
"""
is_superuser = models.BooleanField(
_('superuser status'),
default=False,
help_text=_(
'Designates that this user has all permissions without '
'explicitly assigning them.'
),
)
groups = models.ManyToManyField(
Group,
verbose_name=_('groups'),
blank=True,
help_text=_(
'The groups this user belongs to. A user will get all permissions '
'granted to each of their groups.'
),
related_name="%(app_label)s_%(class)s_related",
related_query_name="%(app_label)s_%(class)ss",
) …Run Code Online (Sandbox Code Playgroud) python django postgresql django-models django-rest-framework
object selectedDataItem;
MyClass.Inventory inventory;
inventory = (MyClass.Inventory) selectedDataItem;
Run Code Online (Sandbox Code Playgroud)
在inventory我们可以看到的细节如下:
Trace.Writeline(inventory.Name + " " + inventory.Place);
Run Code Online (Sandbox Code Playgroud)
你看库存有inventory.Name,Inventory.Place我想包装IEnumerable或ObservableCollection中的所有属性,这样我就可以一次遍历所有库存,而不是通过inventory.Name,inventory.Place等等...
如何制作库存IEnumerable以便我可以这样做:
IEnumerable<MyClass.Inventory> enumerable = (IEnumerable<MyClass.Inventory>) inventory;
enumerable = from x in enumerable where x.Name == inventory.Name select x;
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做,错误是
无法将类型为"MyClass.Inventory"的对象强制转换为"System.Collections.Generic.IEnumerable`1 [MyClass.Inventory]".
我正在处理类似于xml 的gpx文件.这是该文件的摘录:
<trkpt lat="3.1398377" lon="101.6937661">
<ele>0.0</ele>
<time>2013-01-01T00:00:00.000Z</time>
<name>Position 1</name>
</trkpt>
<trkpt lat="3.1250538" lon="101.6783237">
<ele>0.0</ele>
<name>Position 460</name>
</trkpt>
Run Code Online (Sandbox Code Playgroud)
如您所见,某些<trkpt>元素包含<time>元素,而某些元素则不包含元素.如何添加<time>那些<trkpt>不包含它的元素?
在读取文件时,如果XML节点不包含,则会产生错误<time>:
foreach $points ( $root->getElementsByTagName('trkpt') ) {
my($lat) = $points->findvalue('@lat');
my($lon) = $pints->findvalue('@lon');
my($time) = $points->getElementsByTagName('time')->[0]->textContent();
my($pointName) = $points->getElementsByTagName('name')->[0]->textContent();
}
Run Code Online (Sandbox Code Playgroud)
无法在未定义的值上调用方法"textContent"...
我怎样才能让它变得更聪明?也就是说,如果遇到未定义的$time,它会将其写入<time>gpx文件,并且不会发生错误.
django ×3
python ×3
perl ×2
arrays ×1
c# ×1
casting ×1
grep ×1
ienumerable ×1
jwt ×1
metaclass ×1
postgresql ×1
validation ×1
xml-parsing ×1