我需要从带有非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) 在验证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
我有一个自定义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
我试图通过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) 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()之前设置,但我无法跟踪它以查看它是否对事务行为有任何影响.
编辑:示例代码可以在这里找到.
Twitter一次最多允许100个用户ID查询用户个人资料信息.但如果其中包含无效ID,则返回:
404 (Not Found), No user matches for specified terms
Run Code Online (Sandbox Code Playgroud)
不指定哪个是坏ID,并且没有为列表中的其余用户返回任何数据.如果列表中的用户关闭其帐户,则会发生这种情况.
有没有办法识别无效的ID,而不是一个一个地再次通过列表(并可能达到速率限制)?
我可以通过 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)
我在这里做错了什么?谢谢。
我试图使用通用的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传递的参数的动态表单?
谢谢.
在AWS Neptune文档中,它表示它与Apache TinkerPop Gremlin兼容,但它仅涉及在线事务处理(OLTP)类型的图遍历查询.我还没有看到任何关于长期运行的在线分析处理(OLAP)GraphComputer查询.
是否可以对存储在AWS Neptune图数据库服务中的图形执行OLAP查询?
这可能是我在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.
django ×5
django-admin ×2
python ×2
boto3 ×1
commit ×1
database ×1
django-forms ×1
django-views ×1
graph ×1
gremlin ×1
olap ×1
overriding ×1
rest ×1
sqlite ×1
ssl ×1
transactions ×1
twitter ×1
twython ×1
unicode ×1
urllib2 ×1
urlopen ×1
widget ×1