小编GCh*_*orn的帖子

全字匹配仅在Django查询中

我正在尝试编写一个只匹配整个单词的Django查询.基于这里的答案,我尝试过类似的东西:

result = Model.objects.filter(text__iregex='\bsomeWord\b')
Run Code Online (Sandbox Code Playgroud)

但这并没有返回预期的结果.我也试过了

result = Model.objects.filter(text__iregex=r'\bsomeWord\b')
Run Code Online (Sandbox Code Playgroud)

无济于事.我的最终目标是能够传入一个字符串变量,例如:

result = Model.objects.filter(text__iregex=r'\b'+stringVariable+r'\b')
Run Code Online (Sandbox Code Playgroud)

要么

result = Model.objects.filter(text__iregex=r'\b %s \b'%stringVariable)
Run Code Online (Sandbox Code Playgroud)

但是现在我甚至无法使用原始字符串.我正在使用PostgreSQL.

regex django postgresql django-queryset

11
推荐指数
1
解决办法
5695
查看次数

Django manage.py测试无法正确加载夹具

我使用django.test.TestCase编写了Django测试,我想使用一个包含所有当前数据库数据的fixture来运行测试.但是,如果我按如下方式创建夹具:

python manage.py dumpdata --indent=3 > myapp/fixtures/test_data.json
Run Code Online (Sandbox Code Playgroud)

当我然后使用运行测试时python manage.py test myapp,我收到以下错误:

Problem installing fixture...(traceback)
IntegrityError: Could not load auth.Permission(pk=42): duplicate key value violates unique constraint "auth_permission_content_type_id_codename_key"
DETAIL:  Key (content_type_id, codename)=(14, add_record) already exists.
Run Code Online (Sandbox Code Playgroud)

我在某处看到这可能是由pk冲突造成的,所以我尝试用以下方法重新创建灯具:

python manage.py dumpdata --natural --indent=3 > myapp/fixtures/test_data.json
Run Code Online (Sandbox Code Playgroud)

但现在运行测试给了我:

Problem installing fixture...(traceback)
DeserializationError: 'NoneType' object has no attribute '_meta'
Run Code Online (Sandbox Code Playgroud)

我也试过各种排除(使用--exclude选项)auth.permissioncontenttypes(或同时),但后来我抱怨缺少权限(Key (permission_id)=(44) is not present in table "auth_permission".)或缺少内容类型(DeserializationError: ContentType matching query does not exist.)

问题是,我还是需要权限,因为我的测试部分是为了验证只有具有特定权限的用户才能访问某些视图.

我不明白为什么会发生这种情况,说实话 …

django unit-testing django-testing django-fixtures

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

Django似乎以UTC格式显示日期时间

settings.py我有:

TIME_ZONE = 'Asia/Singapore'
USE_I18N = True
USE_L10N = True
USE_TZ = True
Run Code Online (Sandbox Code Playgroud)

如果用户(居住在新加坡)2013-10-07 01:00 A.M.在我的网站上输入表格,则存储在我的(PostgreSQL)数据库中的值为2013-10-07 01:00:00+08.当我在python manage.py shell会话期间提取这些信息时,我明白了2013-10-06 17:00:00+00:00.当我尝试在模板中呈现此信息时也会发生同样的情况.

我认为发生了什么:Django认识到用户正在新加坡时间10月10日凌晨1点进入,并将其存储在数据库中2013-10-07 01:00:00+08.但是,当Django从数据库中检索此信息时,它会将其格式化为UTC时间,从而给出2013-10-06 17:00:00+00:00.

我有这个权利吗?如果是这样,我可以做些什么来使用存储在数据库中的相同时区信息(或至少使用我的TIME_ZONE设置)来显示Django时间?换句话说,我怎样才能让用户以与输入日期时完全相同的形式看到日期时间?

django timezone datetime

6
推荐指数
2
解决办法
3693
查看次数

WordPress XML ParseError:未绑定的前缀?

我正在尝试使用Python的xml.etree.ElementTree.parse()函数来解析我通过从WordPress博客导出所有内容而创建的XML文件.但是,当我这样做时:

import xml.etree.ElementTree as xml
tree = xml.parse('/path/to/file.xml')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1183, in parse
tree.parse(source, parser)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 656, in parse
parser.feed(data)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1643, in feed
self._raiseerror(v)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1507, in _raiseerror
raise err
ParseError: unbound prefix: line 189, column 1
Run Code Online (Sandbox Code Playgroud)

这是我的XML文件的第189行:

<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blogname.wordpress.com/osd.xml" title="blog name" />
Run Code Online (Sandbox Code Playgroud)

我已经看到很多关于这个错误的问题出现在Android开发中,但我不知道是否以及如何适用于我的情况.有人能帮忙吗?

python wordpress xml-parsing

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

性能 vs 可读性:jQuery/JS 中的多个选择器 vs. 多个语句

我正在编写一些 jQuery 代码,可以同时隐藏或显示大表中的多个表列。我想知道使用这样的代码是否会更快:

$("selector 1, selector 2, selector 3").css("display", "none");
Run Code Online (Sandbox Code Playgroud)

或这样的代码:

$("selector 1").css("display", "none");
$("selector 2").css("display", "none");
$("selector 3").css("display", "none");
Run Code Online (Sandbox Code Playgroud)

所以我使用jsperf.com 创建了一个性能测试用例。有了这个,我确定第一种类型的代码(使用一个带有多个选择器的长字符串)比第二种类型的代码(一次隐藏一个列)快 53%。但是,当我写完它时,它将变得难以阅读,看起来像这样:

$("#table tr *:nth-child(4), #table tr *:nth-child(5), #table tr *:nth-child(6), #table tr *:nth-child(7), #table tr *:nth-child(8), #table tr *:nth-child(9), #table tr *:nth-child(10), #table tr *:nth-child(11), #table tr *:nth-child(12)").css("display", "none");
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,对于 jQuery/JS 代码来说,哪个是更大的弊端——低效的性能,或者缺乏可读性?我的背景是 Python,所以我倾向于将可读性置于性能之上,而 53% 在现实世界中似乎并不是一个巨大的下降。但另一方面,我计划在部署后缩小我的 JS 代码,因此无论如何它最终都不会可读......不可读的形式。正如你所看到的,我可以围绕这个话题在圈子里谈论自己,我不想开始辩论或讨论,所以我只是在这里发布这个,以防在 jQuery/ JS社区。

javascript jquery

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

使用普通的Ubuntu Linux用户无法访问Django中的PostgreSQL数据库

我正在Ubuntu 11.10中学习用户PostgreSQLDjango一起,我发现我需要切换到我"postgres"在终端(通过"sudo su postgres")中安装PostgreSQL()时创建的用户,以便创建然后访问数据库以便在Django中工作.不幸的是,"postgres"用户在我的本地文件系统上没有文件写入权限,因此当我尝试执行某些操作(例如将模型对象添加到具有图像字段的数据库)时,我被阻止了.但是,如果我在终端中切换到我的普通Ubuntu用户名并尝试访问Django的开发服务器上的管理站点,我会收到如下错误:

OperationalError at /admin/

FATAL:  Peer authentication failed for user "postgres"

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version:     1.3.1
Exception Type:     OperationalError
Exception Value:    

FATAL:  Peer authentication failed for user "postgres"

Exception Location:     /usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py in _cursor, line 140
Python Executable:  /usr/bin/python
Python Version:     2.7.2
Run Code Online (Sandbox Code Playgroud)

我正在尝试阅读PostgreSQL文档,让我的普通用户访问我为Django项目创建的数据库,但我无法理解,因为我不理解PostgreSQL角色/用户之间的关系和Ubuntu用户.有人可以向我解释如何在PostgreSQL中为我的数据库提供正常的Ubuntu用户名访问权限吗?我可能需要一个特定的指令列表,因为我试图使用PostgreSQL文档将它拼凑在一起,我完全迷失了.

django postgresql ubuntu

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

Python str.find()重写Element.find(),如何规避?

我正在编写一些使用Element.find()Python xml.etree.ElementTree模块中的方法的代码.但是,我发现只要我开始使用str.replace(),Python就会将我的调用解释object.find()str.find()而不是Element.find().

我需要我的代码Element从XML文件中获取各种对象的文本,在某些情况下我需要使用str方法修改它.如何在不改变解释器解释方式的情况下执行此操作object.find()?这是我的代码:

import xml.etree.ElementTree as xml
import re
import json

pattern = re.compile('[a-z,0-9,-]+')
c_pattern = re.compile('\[caption[^\]]+\]')
c2_pattern = re.compile('\[/caption\]')

tree = xml.parse('file.xml')
root = tree.getroot()

for item in root.iter('item'):
    if item.find('{http://wordpress.org/export/1.2/}post_type').text == 'post':
        t = item.find('{http://purl.org/rss/1.0/modules/content/}encoded').text
        print item.find
        try:
            t = t.encode('utf-8')

            o_cap = re.findall(c_pattern,t)
            e_cap = re.findall(c2_pattern,t)

            for item in o_cap:
                t = t.replace(item,'') 
            for item in e_cap:
                t = t.replace(item,'') …
Run Code Online (Sandbox Code Playgroud)

python

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