小编Rom*_*cea的帖子

Django独特的模型字段验证形式

我有一个带有一些独特字段的模型,我正在为它编写一个表单.我找到了一些[validate_unique][1]方法的引用,当你调用它时应该检查字段的唯一性,但我的表单.is_valid()总是返回True.

我的测试用例:

class ServerFormTest( TestCase ):
    def setUp( self ):
        self.server = Server.objects.create( host = "127.0.0.1", name = "localhost" )

    def test_unique_name(self):
        form = ServerForm({
            'name': 'localhost',
            'host': '127.0.0.1'
        })

        self.assertFalse( form.is_valid( ) )
Run Code Online (Sandbox Code Playgroud)

和我的形式:

class ServerForm( forms.ModelForm ):
    class Meta:
        model = Server
        fields = ('name', 'host')

    def clean( self ):
        self.validate_unique()
        return self.cleaned_data
Run Code Online (Sandbox Code Playgroud)

服务器型号:

class Server( models.Model ):
    host = models.GenericIPAddressField( blank = False, null = False, unique = True )
    name …
Run Code Online (Sandbox Code Playgroud)

django django-forms

6
推荐指数
1
解决办法
6608
查看次数

带有nginx的Django频道没有客户端收到的消息

我们有一个使用渠道包的应用程序,在localhost上工作得很好.一旦我们点击staging并nginx在Django前面放置一个盒子(使用SSL),我们就可以连接到套接字,但客户端不会收到任何消息.

Nginx conf:

worker_processes auto;

error_log /dev/stdout info;

user nobody nogroup;
pid /tmp/nginx.pid;

events {
    worker_connections 1024;
    accept_mutex off;
}

http {
    include mime.types;
    default_type application/octet-stream;
    access_log /dev/stdout;
    sendfile on;
    keepalive_timeout 65;
    gzip on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_vary on;

    upstream ws_server {
        server unix:/tmp/daphne.sock fail_timeout=0;
    }

    server {
        #   redirect all http requests to https
        listen 80;
        listen [::]:80 ipv6only=on;
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;

        client_max_body_size 4G;
        server_name changemyip.com;
        keepalive_timeout 5;
        add_header Strict-Transport-Security "max-age=31536000; …
Run Code Online (Sandbox Code Playgroud)

nginx websocket django-channels

6
推荐指数
1
解决办法
3359
查看次数

Kubernetes pod 一次全部失败

我有一个在 kubernetes (GKE) 上运行的非常简单的 Flask 应用程序。Pod 获得了相当多的流量 (60req/s +-),并且它们在至少 4 个活动和 10 个最大的自动缩放组下运行。

每隔 4-5 小时,活性探测就会开始失败,所有 pod 都会重新启动。我有时会发现我的 Pod 在一个晚上会重启 11-12 次。当我描述豆荚时,我得到了同样的错误:

Liveness probe failed: Get http://10.12.5.23:5000/_status/healthz/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

所有 pod 都具有相同的重启次数,因此这不是负载问题(而且我也有自动缩放功能)。

_status/healthz/端点很简单,因为它得到:

@app.route('/')
@app.route('/_status/healthz/')
def healthz():
    return jsonify({
        "success": True
    })
Run Code Online (Sandbox Code Playgroud)

我在此应用程序上还有另一条路由,它连接到 mysql 并验证一些数据。我将相同的应用程序分布在 digitalocean droplets 上,并在更高的负载下运行数月而没有出现问题。

我似乎无法找出为什么活性检查开始失败一次并且我的 pod 重新启动。

分配的资源也不错,与我在 digitalocean droplets 上的资源非常接近:

"resources": {
    "requests": {
        "cpu": "500m",
        "memory": "1024Mi"
    },
    "limits": {
        "cpu": "800m", …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine kubernetes-health-check

6
推荐指数
0
解决办法
1610
查看次数

如果没有控制台构建pyinstaller程序不工作

我有一个小应用程序,我正在尝试针对Windows机器构建.该程序创建一个OpenVPN连接.如果我构建程序并运行它,它首先打开一个控制台作为程序输出.如果我将-w参数传递给pyinstaller,而不是在附加控制台的情况下构建它,则程序根本无法运行.它打开了,但永远不会创建vpn连接.

控制台一切都很完美.

我还有一个应用程序的基本日志记录,以查看我的代码可能停止的位置,并且没有任何内容写入.我的程序上的控制台吐出各种日志.

我只是不知道为什么我的程序可以用控制台完美地执行,但没有一个没有做任何事情.有任何想法吗?

pyinstaller

5
推荐指数
2
解决办法
1391
查看次数

pyqt应用程序执行更新

我有一个PyQt准备发布的应用程序.一切都运作良好,我还有一件事要结束.我喜欢自我更新的软件:

  • 检查新版本的URL;
  • 找到新版本;
  • 通知用户更新(单击)→ 更新.

问题是我不知道如何执行此更新.我检查,我发现新版本,我下载它然后我必须关闭应用程序并执行新版本的安装程序.如果我关闭它然后我不能执行任何其他,如果我执行安装程序我无法关闭应用程序.

基于一些用户选择我的程序还下载并安装了一些需要相同的第三方软件:安装程序前关闭,安装程序后重启.

pyqt updates

5
推荐指数
2
解决办法
1072
查看次数

在 Vagrant 中设置从主机到访客的 ENV 变量

有什么方法可以在启动时从主机到来宾 Vagrant OS 设置一些 ENV 变量?我需要从我的来宾操作系统连接到数据库,并且我想将数据库 URL 从主机传递给来宾以及其他参数。

我尝试过,TEST="foo" vagrant up但 TEST 在来宾操作系统上的环境变量中无处可去。有任何想法吗?

vagrant vagrantfile

5
推荐指数
1
解决办法
5375
查看次数

Elixir将datetime转换为字符串

我有一个原始的SQL查询返回一个日期时间字段,我想返回一个带有这些结果的json.

如果我把返回值我抱怨:

(Poison.EncodeError) unable to encode value: {{2017, 3, 21}, {0, 0, 0, 0}}

如果我尝试使用Timex以下方法将其转换为字符串:

Timex.format!(Ecto.DateTime.from_erl(datetime_field), "%Y-%m-%d %H:%M:%S", :strftime)

我明白了:

** (FunctionClauseError) no function clause matching in Ecto.DateTime.from_erl/1

如果我跳过这from_erl部分:

Timex.format!(datetime_field, "%Y-%m-%d %H:%M:%S", :strftime)

我明白了:

** (Poison.EncodeError) unable to encode value: {:error, :invalid_date}

elixir ecto timex

5
推荐指数
1
解决办法
1815
查看次数

正则表达式匹配空间不在括号,称赞或方形大括号中

我正在尝试按空格/空格分隔句子,但是我必须排除括号(),赞美{}或方括号内的空格[]

ex字符串:[apples carrots] (car plane train) {food water} foo bar应导致包含以下内容的数组:

  • [苹果胡萝卜]
  • (汽车飞机火车)
  • {食用水}
  • 酒吧

有任何想法吗?

regex

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

Django根据另一个字段的值验证字段

我有这个 django 字段,用于is_private指示用户所做的发布是否是私人的。如果发布是私人的,则private_room必须提及某个被调用的字段,否则需要一个被调用的字段public_room

clean_private_roomclean_public_room字段中,我正在检查is_private. 如果房间是私人的,那么在clean_public_room方法中我只返回一个空字符串""clean_private_room否则我继续验证。

问题是检查 withself.cleaned_data.get('is_private')在这两种方法中返回不同的结果。我尝试调试代码并将self.cleaned_data值打印到终端,其中一种方法清理数据包含一个表单字段,另一种方法包含我完整发布的值。

这是我的代码的一部分,请阅读其中的注释以查看我打印的位置和打印的内容。我不知道它为什么会这样。

class RoomForm( forms.ModelForm ):
    ...

    def clean_is_private( self ):
        if not 'is_private' in self.cleaned_data:
            raise forms.ValidationError("please select the type of room (private/public)")
        return self.cleaned_data.get("is_private")

    def clean_public_room( self ):
        print "<clean_public_room>"
        #   !!!!!!!!!
        #   when printing this one I only get one form value which is: public_room
        print self.cleaned_data

        if self.cleaned_data.get("is_private"): …
Run Code Online (Sandbox Code Playgroud)

django django-forms

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

Django 选择相关对象的深度很多级别

我在 Django 中有这 4 个表:

  • 商店 (id)
    • 产品(id,store_id)
    • 订单(product_id,customer_id)
  • 客户 (id)

一个商店有很多产品,一个产品有很多订单,一个订单有一个产品和一个客户。

我将如何在 Django 中查询以检索每个商店的不同客户列表?我可以使用 SQL 查询轻松完成,但我真的更喜欢采用 ORM 方式。

django django-queryset

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