小编oma*_*mat的帖子

如何使用Python urlopen获取非ascii url?

我需要从带有非ascii字符的URL获取数据,但urllib2.urlopen拒绝打开资源并引发:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u0131' in position 26: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我知道URL不符合标准,但我没有机会改变它.

什么是访问由包含使用Python非ASCII字符的URL指向的资源的方式吗?

编辑:换句话说,可以/如何urlopen打开一个URL,如:

http://example.org/Ñöñ-Å?Ç??/
Run Code Online (Sandbox Code Playgroud)

python unicode urllib2 non-ascii-characters urlopen

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

ModelForm的Django TextField max_length验证

在验证ModelForm时,Django不尊重TextField模型字段的max_length属性.

所以我定义了一个继承自models.TextField的LimitedTextField,并添加了类似于models.CharField的验证位:

from django.core import validators

class LimitedTextField(models.TextField):
    def __init__(self, *args, **kwargs):
        super(LimitedTextField, self).__init__(*args, **kwargs)
        self.max_length = kwargs.get('max_length')
        if self.max_length:
            self.validators.append(validators.MaxLengthValidator(self.max_length))

    def formfield(self, **kwargs):
        defaults = {'max_length': self.max_length}
        defaults.update(kwargs)
        return super(LimitedTextField, self).formfield(**defaults)
Run Code Online (Sandbox Code Playgroud)

但这对ModelForm验证仍然没有影响.

我错过了什么?任何帮助深表感谢.

谢谢,

OMAT

django django-models django-forms django-validation

28
推荐指数
2
解决办法
3万
查看次数

Django Admin - 覆盖自定义表单字段的小部件

我有一个自定义TagField表单字段.

class TagField(forms.CharField):
    def __init__(self, *args, **kwargs):
        super(TagField, self).__init__(*args, **kwargs)
        self.widget = forms.TextInput(attrs={'class':'tag_field'})
Run Code Online (Sandbox Code Playgroud)

如上所示,它使用TextInput表单字段小部件.但在管理员中我希望它使用Textarea小部件显示.为此,有formfield_overrides钩子,但它不适用于这种情况.

管理声明是:

class ProductAdmin(admin.ModelAdmin):
    ...
    formfield_overrides = {
        TagField: {'widget': admin.widgets.AdminTextareaWidget},
    }
Run Code Online (Sandbox Code Playgroud)

这对表单字段小部件没有影响,tags仍然使用TextInput小部件进行呈现.

任何帮助深表感谢.

-
omat

django overriding widget django-admin

28
推荐指数
3
解决办法
4万
查看次数

python:APNs SSLError

我试图通过python发送推送通知到这里所述,但我收到以下错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/omat/CA/server/ca/models.py", line 193, in push
    c.connect((host_name, 2195))
  File "/usr/lib/python2.6/ssl.py", line 307, in connect
    self.ca_certs)
SSLError: [Errno 336265225] _ssl.c:337: error:140B0009:SSL routines:
  SSL_CTX_use_PrivateKey_file:PEM lib
Run Code Online (Sandbox Code Playgroud)

回溯说,错误是从python ssl模块中引发的,但是消息不对我唱歌.关于可能出错的任何想法?

谢谢,

OMAT

编辑:

使用的证书是根据证书和私钥创建的,如下所示:

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
Run Code Online (Sandbox Code Playgroud)

python ssl apple-push-notifications

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

Django:从事务角度看save()和create()之间的区别

Django中的create()方法创建一个模型实例,然后调用save(),据说触发提交.因此触发事务的提交应该没有任何区别.

但实际上,在Postgresql上使用create()创建一组模型实例的方法我得到了transaction aborted, commands ignored until end of transaction异常.该方法适用于非事务性数据库后端.另外,当我用以下内容替换create()时:

m = Model(attr1=..., attr2=...)
m.save()
Run Code Online (Sandbox Code Playgroud)

它也可以在Postgresql上运行.

使用save()create()交易意义上有区别吗?

edit: create()也在self._for_write = True调用save()之前设置,但我无法跟踪它以查看它是否对事务行为有任何影响.

编辑:示例代码可以在这里找到.

django transactions commit

13
推荐指数
1
解决办法
9767
查看次数

Twitter Rest API:404没有用户匹配指定的条款

Twitter一次最多允许100个用户ID查询用户个人资料信息.但如果其中包含无效ID,则返回:

404 (Not Found), No user matches for specified terms
Run Code Online (Sandbox Code Playgroud)

不指定哪个是坏ID,并且没有为列表中的其余用户返回任何数据.如果列表中的用户关闭其帐户,则会发生这种情况.

有没有办法识别无效的ID,而不是一个一个地再次通过列表(并可能达到速率限制)?

twitter rest twython twitter-rest-api

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

DynamoDB:过滤器表达式只能包含非主键属性

我可以通过 DynamoDB 控制台查询 GSI,如屏幕截图所示。

截图:查询

当我使用以下代码在终端上使用 Boto3 运行相同的查询时:

table.query(
    IndexName='date-timestamp-index',
    KeyConditionExpression=Key('date').eq('20161231'),
    FilterExpression=Attr('timestamp').between(1483130000, 1483133600) & Attr('tags').exists()
)
Run Code Online (Sandbox Code Playgroud)

我得到一个ValidationException例外:

Filter Expression can only contain non-primary key attributes: Primary key attribute: timestamp
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?谢谢。

amazon-dynamodb boto3

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

Django:基于参数类的视图

我试图使用通用的CreateView类来处理从同一基类继承的一组模型的表单.

class BaseContent(models.Model):
    ...

class XContent(BaseContent):
    ...

class YContent(BaseContent):
    ...
Run Code Online (Sandbox Code Playgroud)

为了保持DRY,我想定义一个CreateView类,它将处理来自BaseContent的所有继承类.

该视图的url模式为:

url(r'^content/add/(?P<model_name>\w+)/$', ContentCreateView.as_view(), name='content_add')
Run Code Online (Sandbox Code Playgroud)

这样的事情应该有效:

class ContentCreateView(CreateView):
    template_name = 'content_form.html'

    def get_model(self, request):
        # 'content' is the name of the application; model_name is 'xcontent', 'ycontent', ...
        return ContentType.objects.get_by_natural_key('content', self.model_name)
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:

ContentCreateView is missing a queryset. Define ContentCreateView.model, ContentCreateView.queryset, or override ContentCreateView.get_object().
Run Code Online (Sandbox Code Playgroud)

这个建议似乎并不成立,因为我不愿意设置类属性,model或者queryset保持模型表单生成动态.覆盖get_object它似乎与创建对象无关.

我试过覆盖get_queryset()但是这个方法不接受request参数,也没有self.model_name来自url模式的访问权限.

长话短说,如何让CreateView使用基于从url传递的参数的动态表单?

谢谢.

django django-views django-class-based-views

7
推荐指数
1
解决办法
3023
查看次数

AWS Neptune上的Gremlin OLAP查询

在AWS Neptune文档中,它表示它与Apache TinkerPop Gremlin兼容,但它仅涉及在线事务处理(OLTP)类型的图遍历查询.我还没有看到任何关于长期运行的在线分析处理(OLAP)GraphComputer查询.

是否可以对存储在AWS Neptune图数据库服务中的图形执行OLAP查询?

olap graph amazon-web-services gremlin amazon-neptune

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

DatabaseError:无法打开db文件,但仅适用于Django admin

这可能是我在Django工作4年中最奇怪的问题.

我的网站在当地工作正常.在生产环境中它也运行良好,除了当我尝试访问管理站点时,我收到服务器错误,这是Apache错误日志中的"OperationalError:无法打开数据库文件".

DB文件是全局可写的,设置中的路径是绝对的.生产环境是Ubuntu Lucid/Python 2.6/Sqlite3.我尝试使用Django 1.2.4和1.3 beta.

奇怪的是,我可以syncdb在服务器上.它创建表和管理员用户.我可以毫无问题地访问该网站.我可以shell在python提示符下运行和创建内容.该网站是可浏览的.只有当我访问admin时,才会出现此错误.

我没有依据任何理由.任何帮助是极大的赞赏.

ps:错误是在Apache级别引发的,而不是来自Django.Django回溯是在Apache错误日志中读取的DatabaseError: unable to open database file.

database sqlite django django-admin

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