在与本地不同的环境中,我DJ_SSL_REDIRECT = True为Django项目设置了。
但是现在,当我在其他环境(例如,在Travis CI中)中运行时,与REST API端点相关的所有单元测试都失败了。
发生的事情是所有HTTP响应都是301(由于我期望2XX或4XX正在测试中)由于该DJ_SSL_REDIRECT设置,如doc中所述:
如果将SECURE_SSL_REDIRECT设置设置为True,SecurityMiddleware将永久(HTTP 301)将所有HTTP连接重定向到HTTPS。
在保持单元测试相关性的情况下,我该如何以一种简单的方式处理呢?谢谢。
注意:我正在使用Django Rest Framework 3.5
我创建了一个简单的Ionic2/3项目,只需使用所有默认设置设置WebStorm.
运行项目时ionic serve,热重新加载按预期工作.
然而,有一种奇怪且非常烦人的行为:
cmd+S多次编写一些文本,它可以非常快速地重建项目(200ms)并且根本不会冻结IDE.笔记:
任何的想法?谢谢.
Stripe介绍了一种收集名为Stripe Elements的信用卡信息的方法.粗略地说,它包括让Stripe建议用于收集信用卡的UI.
我在Ionic3/Angular4应用程序中使用它.现在,除了我发现一个非常讨厌的bug之外,它只能在iOS中运行完美:当关注信用卡号码时,会出现一个键盘(似乎是原生的键盘),然后它会被离子键盘取代0.5秒之后,正如这两部iPhone截图所示:
这通常不会成为问题.但是,如果我按"后退"按钮,我会转到上一页,但键盘会停留!即使我关闭键盘,一旦我进入新页面,或者如果我打开菜单,它将永远重新打开...我的用户界面被打破了.
我有直觉,在任何输入上触发的离子键盘与Stripe代码触发的本机键盘之间存在冲突.但是由于条纹元素的性质,我无法控制表单的内容,我在html代码中只有这个:
<form action="/charge" method="post" id="payment-form">
<div class="form-row">
<div id="card-element">
<!-- a Stripe Element will be inserted here. -->
</div>
....
</form>
Run Code Online (Sandbox Code Playgroud)
知道如何尝试调试这个吗?你认为我可以告诉Ionic不要触发键盘吗?
非常感谢.注意:我正在使用离子角度3.7.1
我有Order对象和OrderOperation对象代表对订单的操作(创建、修改、取消)。
从概念上讲,一个订单有一对多的订单操作。每次对订单进行操作时,都会在此操作中计算总数。这意味着当我需要查找订单的属性时,我只是使用子查询获取最后一个订单操作属性。
class OrderOperation(models.Model):
order = models.ForeignKey(Order)
total = DecimalField(max_digits=9, decimal_places=2)
class Order(models.Model)
# ...
class OrderQuerySet(query.Queryset):
@staticmethod
def _last_oo(field):
return Subquery(OrderOperation.objects
.filter(order_id=OuterRef("pk"))
.order_by('-id')
.values(field)
[:1])
def annotated_total(self):
return self.annotate(oo_total=self._last_oo('total'))
Run Code Online (Sandbox Code Playgroud)
这样,我就可以跑了my_order_total = Order.objects.annotated_total()[0].oo_total。它工作得很好。
计算总数很容易,因为它是一个简单的值。但是,当存在 M2M 或 OneToMany 字段时,此方法不起作用。例如,使用上面的示例,让我们添加此字段:
class OrderOperation(models.Model):
order = models.ForeignKey(Order)
total = DecimalField(max_digits=9, decimal_places=2)
ordered_articles = models.ManyToManyField(Article,through='orders.OrderedArticle')
Run Code Online (Sandbox Code Playgroud)
编写如下内容不起作用,因为它只返回 1 个外键(不是所有 FK 的列表):
def annotated_ordered_articles(self):
return self.annotate(oo_ordered_articles=self._last_oo('ordered_articles'))
Run Code Online (Sandbox Code Playgroud)
整个目的是允许用户在所有订单中进行搜索,在输入中提供列表或文章。例如:“请查找至少包含第 42 条或第 43 条的所有订单”,或“请查找完全包含第 42 条和第 43 条的所有订单”等。
如果我能得到类似的东西:
>>> Order.objects.annotated_ordered_articles()[0].oo_ordered_articles …Run Code Online (Sandbox Code Playgroud) 定义数据类时 frozen=False(默认行为),然后实例化这个类的一个对象时,有没有办法让这个对象可以散列?
在 Python 3.7 之前,我使用命名元组而不是数据类,我曾经使用 查找重复项set(),但我不能再使用它了。frozen=True由于其他原因,我不想在数据类上使用。
假设您具有以下相关的Django模型:
class Service:
restaurant = models.ForeignKey(Restaurant)
hist_day_period = models.ForeignKey(DayPeriod)
class DayPeriod:
restaurant = models.ForeignKey(Restaurant)
Run Code Online (Sandbox Code Playgroud)
我想Service使用Factory 创建一个对象。它应该创建所有3个模型,但使用同一家餐厅。
使用此代码:
class ServiceFactory(factory.django.DjangoModelFactory):
class Meta:
model = Service
restaurant = factory.SubFactory('restaurants.factories.RestaurantFactory')
hist_day_period = factory.SubFactory(
'day_periods.factories.DayPeriodFactory', restaurant=restaurant)
Run Code Online (Sandbox Code Playgroud)
工厂男孩将创建2家不同的餐厅:
s1 = ServiceFactory.create()
s1.restaurant == s1.hist_day_period.restaurant
>>> False
Run Code Online (Sandbox Code Playgroud)
关于如何执行此操作的任何想法?我不清楚我是否应该使用related factors而不是SubFactory完成此操作。
我不明白Django DecimalField的行为.
它被定义为:
一个固定精度的十进制数,由Decimal实例在Python中表示.
但是,使用以下模型:
class Article(models.Model)
unit_price = DecimalField(max_digits=9, decimal_places=2)
Run Code Online (Sandbox Code Playgroud)
我可以用至少3种方式创建一篇文章:
article = Article.objects.create(unit_price="2.3")
type(article.unit_price)
>>> str
article = Article.objects.create(unit_price=2.3)
type(article.unit_price)
>>> float
article = Article.objects.create(unit_price=Decimal('2.3'))
type(article.unit_price)
>>> decimal.Decimal
Run Code Online (Sandbox Code Playgroud)
为什么Django DecimalField能够返回除Decimal类型以外的其他内容?
什么是确保我的应用程序永远不会处理浮动价格的最佳方法?
谢谢.
class ModelA(models.Model):
class Meta:
verbose_name = 'my awesome name'
class ModelB(models.Model):
some_field = models.ForeignKey(ModelA)
Run Code Online (Sandbox Code Playgroud)
有没有办法让some_fieldverbose_name my awesome name没有明确的说明?(即使用详细名称相关类作为默认字段详细名称,而不是使用属性名称)我实际上认为这应该是默认的Django行为.
注意:我正在使用Django 1.11
当我更改verbose_nameDjango 模型的属性时,Django 将生成相关的迁移(运行make migrations command).
但是,如果不应用迁移(migrate命令),更改似乎会应用到整个 Django 项目。我认为这是因为verbose_name它是在 Django 级别而不是数据库级别使用的。
这让我想知道:这个迁移文件的目的是什么?
我与代码的唯一区别是我的类采用点格式,例如auth.Permission:
@startuml
class auth.Permission {
+ id
+ content_type
+ codename
}
class auth.Group {
+ id
+ name
+ permissions
}
auth.Group::permissions -- auth.Permission
@enduml
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,最终结果是错误的:创建了第三个类,而不是在正确的位置绘制关系:https://www.plantuml.com/plantuml/uml/SoWkIImgAStDuKhEIImkLaWiBSdG2qWjoiqiBixCprEevj9Mo4m14idvUIMfUINn9PK5gM1kIcfUOcugLoqN5x9MzwByqWA4Bf0I85K0D x0Of06XqieAIKf1LnVTVYw7rBmKeEi0
我做错了什么?谢谢。