小编Sco*_*oda的帖子

确定给定的类属性是否是属性,Python对象

这一切都在标题中.以下是以下示例:

class A(object):
    my_var = 5

    def my_method(self, drink='beer'):
        return 'I like %s' % drink

    @property
    def my_property(self):
        return 'I do not drink coffee'
Run Code Online (Sandbox Code Playgroud)

我实例化一个A对象,我想知道每个属性的类型,以及它是否可调用.为此,我正在使用dir().

obj = A()

for attr in dir(obj):
    print 'Type: %s' % type(obj)
    print 'Is callable: %s' % callable(attr)
Run Code Online (Sandbox Code Playgroud)

我还必须知道属性是否属性.我确信有办法知道这一点.所有建议将不胜感激.

python

31
推荐指数
2
解决办法
9892
查看次数

Django在弹出窗口中呈现模板

作为javascript的初学者,我正在寻找一种在javascript弹出窗口中从django渲染模板的方式.谢谢.

javascript django popup

8
推荐指数
1
解决办法
1万
查看次数

使用 SQLAlchemy 和 Alembic 检查数据库中是否存在表列

我正在使用 Alembic 作为迁移工具,并且我正在一个已经更新的数据库上启动以下伪脚本(Alembic 没有修订条目,数据库架构是最新的)。

revision = '1067fd2d11c8'
down_revision = None

from alembic import op
import sqlalchemy as sa


def upgrade():
    op.add_column('box', sa.Column('has_data', sa.Boolean, server_default='0'))


def downgrade():
    pass
Run Code Online (Sandbox Code Playgroud)

它只在 PostgreSQL 后面给我以下错误(这对 MySQL 来说都很好):

INFO  [alembic.migration] Context impl PostgresqlImpl.
INFO  [alembic.migration] Will assume transactional DDL.
INFO  [root] (ProgrammingError) ERREUR:  la colonne « has_data » de la relation « box » existe déjà
Run Code Online (Sandbox Code Playgroud)

最后一行表示该列has_data已存在。

我想检查该列之前是否存在op.add_column

postgresql sqlalchemy alembic

7
推荐指数
3
解决办法
8459
查看次数

使用 python OpenSSL 从私钥获取公钥

好吧,我用 pyOpenSSL 生成一个私钥,如下所示:

from OpenSSL import crypto
k = crypto.PKey()
k.generate_key(crypto.TYPE_RSA, 2048)
print crypto.dump_privatekey(crypto.FILETYPE_PEM, k)
Run Code Online (Sandbox Code Playgroud)

如何从中获取公钥字符串?我仍然没有找到这个库的什么方法。谢谢

python openssl pyopenssl

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

动态更新ModelForm中ModelMultipleChoiceField的查询集

我试图在ModelForm中更新ModelMultipleChoiceField的查询集.

BaseWriteForm是一个ModelForm,我的类如下所示:

class MyWriteForm(BaseWriteForm):
    """The form for an authenticated user, to compose a message."""

    recipients = forms.ModelMultipleChoiceField(label=_('To'), 
                                                widget=forms.SelectMultiple(attrs={'class': 'chzn-select'}),
                                                queryset = User.objects.all())


    def __init__(self, users_list, **kw):
        self.fields['recipients'].queryset = User.objects.filter(pk__in=users_list)

        super(BaseWriteForm, self).__init__(**kw)


    class Meta(BaseWriteForm.Meta):
        fields = ('recipients', 'subject', 'body')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我有:'MyWriteForm'对象没有属性'字段'

谢谢 !

django django-models django-forms

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

按 Django 中内容对象的值排序

我正在寻找一种优雅的方式来按特定内容对象的字段对查询集进行排序。

class MyModel(models.Model):
    ...
    content_type    = models.ForeignKey(ContentType)
    object_pk       = models.TextField('object ID')
    content_object  = generic.GenericForeignKey('content_type', 'object_pk')
Run Code Online (Sandbox Code Playgroud)

我的内容对象多种多样,但都有一个“计数器”字段

class OtherObject(models.Model):
    ...
    counter = models.PositiveIntegerField(default=0)
    ...
Run Code Online (Sandbox Code Playgroud)

如果我可以查询所有 MyModel 对象,并按相关对象的计数器值对其进行排序,那就太好了。

谢谢 !

django django-models

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

Popen stdout读管,死锁使用睡眠

好吧,我有两个脚本.a.py打印b.py脚本的输出,如下所示:

#a.py
from subprocess import Popen, PIPE, STDOUT

p = Popen(['/Users/damian/Desktop/b.py'], shell=False, stdout=PIPE, stderr=STDOUT)

while p.poll() is None:
    print p.stdout.readline()


#b.py
#!/usr/bin/env python
import time

while 1:
    print 'some output'
    #time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

这有效.但是,当我取消注释time.sleep()行时,为什么我的脚本会死锁?

python deadlock popen

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

在没有python-dev的情况下在生产中使用virtualenv

我有一个python web项目,我在我的开发服务器上使用带有pip的virtualenv.一些python包需要编译,所以我应该使用python-dev来进行pip安装.有没有办法在生产中重现我的需求堆栈保持virtualenv,但没有python-dev,因为我正在处理没有开发服务器?

python pip virtualenv production-environment

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

Vagrant前进端口8080到80

所以我有一个NGINX服务器在Vagrant盒子上用uwsgi监听8080端口.config.vm.forward_port 8080,80对我不起作用.我知道建议在高于2000的端口上转发,但我需要80.这有什么问题吗?

我正在使用vagrant进行开发,但我需要在端口80上使用我的域名从外部进行一些测试.感谢您的帮助.

nginx vagrant

2
推荐指数
1
解决办法
7518
查看次数