小编Dav*_* D.的帖子

Django SECURE_SSL_REDIRECT和301 HTTP响应

在与本地不同的环境中,我DJ_SSL_REDIRECT = True为Django项目设置了。

但是现在,当我在其他环境(例如,在Travis CI中)中运行时,与REST API端点相关的所有单元测试都失败了。

发生的事情是所有HTTP响应都是301(由于我期望2XX4XX正在测试中)由于该DJ_SSL_REDIRECT设置,如doc中所述:

如果将SECURE_SSL_REDIRECT设置设置为True,SecurityMiddleware将永久(HTTP 301)将所有HTTP连接重定向到HTTPS。

在保持单元测试相关性的情况下,我该如何以一种简单的方式处理呢?谢谢。

注意:我正在使用Django Rest Framework 3.5

django travis-ci django-rest-framework

4
推荐指数
1
解决办法
547
查看次数

WebStorm在热重载的Ionic2项目上冻结了很长时间

我创建了一个简单的Ionic2/3项目,只需使用所有默认设置设置WebStorm.

运行项目时ionic serve,热重新加载按预期工作.

然而,有一种奇怪且非常烦人的行为:

  • 当我留在IDE中时(我将鼠标光标留在其中),我可以cmd+S多次编写一些文本,它可以非常快速地重建项目(200ms)并且根本不会冻结IDE.
  • 但是当我在IDE外部点击时:它也开始构建(这是正常的,因为WebStorm此时保存已编辑的文件),当我回到IDE时,无论什么时候,我都有很长的(> 3s)冻结时间,而我完全被阻止(我甚至无法输入东西).

笔记:

  • 它似乎发生在html文件上比在js文件上发生的更多.
  • 我在MBP 2013上使用MacOS Sierra
  • 我正在使用PyCharm(来自IntelliJ),但问题完全相同.SublimeText3没问题.它似乎与IntelliJ有关.

任何的想法?谢谢.

intellij-idea webstorm ionic-framework ionic2 angular

4
推荐指数
1
解决办法
172
查看次数

离子和条纹元素:iOS的键盘错误

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

stripe-payments ionic-framework ionic2 angular

4
推荐指数
1
解决办法
2044
查看次数

Django:如何使用子查询注释 M2M 或 OneToMany 字段?

我有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)

python django django-queryset

4
推荐指数
2
解决办法
3022
查看次数

如何使未冻结的数据类实例可散列?

定义数据类时 frozen=False(默认行为),然后实例化这个类的一个对象时,有没有办法让这个对象可以散列?

为什么我需要这个?

在 Python 3.7 之前,我使用命名元组而不是数据类,我曾经使用 查找重复项set(),但我不能再使用它了。frozen=True由于其他原因,我不想在数据类上使用。

python python-dataclasses

4
推荐指数
1
解决办法
509
查看次数

工厂男孩和相关对象的创建

假设您具有以下相关的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完成此操作。

python django unit-testing factory factory-boy

3
推荐指数
1
解决办法
1625
查看次数

为什么Django DecimalField让我存储Float或字符串?

我不明白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类型以外的其他内容?

什么是确保我的应用程序永远不会处理浮动价格的最佳方法?

谢谢.

python django floating-point decimal

3
推荐指数
1
解决办法
2231
查看次数

Django DRY用外键详细命名?

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

python django

3
推荐指数
1
解决办法
139
查看次数

Django 会创建无用的迁移吗?

当我更改verbose_nameDjango 模型的属性时,Django 将生成相关的迁移(运行make migrations command).

但是,如果不应用迁移(migrate命令),更改似乎会应用到整个 Django 项目。我认为这是因为verbose_name它是在 Django 级别而不是数据库级别使用的。

这让我想知道:这个迁移文件的目的是什么?

django django-models

3
推荐指数
1
解决办法
471
查看次数

PlantUML:“来自/到类成员的箭头”出现意外结果

我正在尝试做类似的事情: 在此输入图像描述

我与代码的唯一区别是我的类采用点格式,例如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

错误的输出

我做错了什么?谢谢。

uml plantuml

3
推荐指数
1
解决办法
456
查看次数