在Python中,我需要一个字典对象,如下所示:
{'a': 10, 'b': 20, 'c': 10, 'd': 10, 'e': 20}
Run Code Online (Sandbox Code Playgroud)
我已经能够通过组合dict.update()和如下dict.fromkeys()功能成功地获得这个:
myDict = {}
myDict.update(dict.fromkeys(['a', 'b', 'c'], 10))
myDict.update(dict.fromkeys(['b', 'e'], 20))
Run Code Online (Sandbox Code Playgroud)
但是,因为代码是为有时需要添加键/值的新手用户编写的,所以我更喜欢简单的简单(Perl-like)语法,例如:
myDict = {}
myDict['a', 'c', 'd'] = 10
myDict['b', 'e'] = 20
Run Code Online (Sandbox Code Playgroud)
然而,这给了我:
myDict = {('a', 'c', 'd'): 10, ('b', 'e'): 20}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以进一步简化我的第一个例子(使用dict.update()和dict.fromkeys()),并获取我正在寻找的dict对象?
或者,或者,如果我在第二个例子中有一个带有元组的字典,那么我是否可以轻松地进行查找,例如myDict['c']或myDict.get('c')获取值10?
为什么Django REST Framework实现了与内置Django机制不同的身份验证机制?
也就是说,可以配置两个设置类:
settings.AUTHENTICATION_BACKENDS 它处理Django级别的身份验证,以及settings.REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES'] 在REST-Framework级别进行身份验证我遇到的问题是我有一个中间件层来检查用户是否登录.
使用通过会话进行身份验证的Web客户端时,这很好用.但是,从移动设备或运行测试套件(即使用HTTP标头和令牌进行身份验证)时,中间件会将用户检测为AnonymousUser,但是当我们到达REST Framework层时,Authorization会读取HTTP 标头,并且用户是登录.
为什么这些都不会在中间件之前发生?此外,为什么REST Framework的身份验证方法不依赖于Django身份验证后端?
authentication django restful-authentication django-rest-framework
我正在使用Django创建一些数据库表,如下所示:
class MetadataTerms(models.Model):
term = models.CharField(max_length=200)
size = models.IntegerField(default=0)
validity = models.IntegerField(default=0, choices=TERM_VALIDITY_CHOICES)
Run Code Online (Sandbox Code Playgroud)
然后我运行查询查询,以term不区分大小写的方式找到正确匹配的相应行.例如:
MetadataTerms.objects.filter(term__iexact=search_string, size=3)
Run Code Online (Sandbox Code Playgroud)
这个查找子句转换为SQL中的类似内容:
SELECT "app_metadataterms"."id", "app_metadataterms"."term", "app_metadataterms"."size" FROM "app_metadataterms" WHERE (UPPER("app_metadataterms"."term"::text) = UPPER('Jack Nicklaus survives') AND "app_metadataterms"."size" = 3 );
Run Code Online (Sandbox Code Playgroud)
在Postgres上,我可以EXPLAIN对上面的内容进行查询,我得到了这个查询计划:
QUERY PLAN
-----------------------------------------------------------------------------------
Seq Scan on app_metadataterms (cost=0.00..1233.01 rows=118 width=21)
Filter: ((size = 3) AND (upper((term)::text) = 'JACK NICKLAUS SURVIVES'::text))
Run Code Online (Sandbox Code Playgroud)
由于该term字段未编制索引,并且未按案例规范化方式编制索引,因此上述查询需要跨所有数据库行执行慢速Seq [uential] Scan操作.
然后我插入一个简单的case-normalized索引,例如:
CREATE INDEX size_term_insisitive_idx ON app_metadataterms (upper(term), size);
Run Code Online (Sandbox Code Playgroud)
上面的查询现在运行速度提高了大约6倍:
QUERY PLAN
---------------------------------------------------------------------------------------------
Bitmap Heap Scan on …Run Code Online (Sandbox Code Playgroud) 我有一个启动Django Web服务器的Makefile.我希望服务器在后台启动,PID保存到文件中.
我的食谱看起来像这样:
run: venv
@"${PYTHON}" "${APP}/manage.py" runserver 80
Run Code Online (Sandbox Code Playgroud)
直观地说,要构建进程并捕获PID,我必须做这样的事情:
run: venv
@"${PYTHON}" "${APP}/manage.py" runserver 80 & ; echo "$$!" > "${LOGDIR}/django.pid"
Run Code Online (Sandbox Code Playgroud)
但这不起作用.使用时,'make'使用的子shell(在我的情况下是/ bin/sh)可以正常工作:
<command> &
Run Code Online (Sandbox Code Playgroud)
...后台进程,并在使用时工作:
<command> ; <command>
Run Code Online (Sandbox Code Playgroud)
(或<command> && <command>等等)链式命令.但是,当我尝试后台第一个进程并链接第二个进程时,我收到以下错误:
/bin/sh: -c: line 0: syntax error near unexpected token `;'
在Makefile中处理进程并捕获PID的最佳方法是什么?
谢谢
- B
按照习惯,我会经常修改我的 repo,并使用一次添加/提交它 git commit -am 'my commit message'
有时我只想添加几个修改过的文件,所以我会发出准备git add命令来精心设置我的暂存区,并将准备提交的更改与半生不熟的更改分开。
然后,我会git commit -am '...'像往常一样发出相同的命令来完成整个事情。
有没有办法让我禁用该git commit -a选项,和/或在我使用-a开关时发出警告?我想训练自己摆脱这种粗略的习惯......
我有一个具有以下类结构的项目:
class A(object):
elems = [1, 2, 3]
class B(A):
pass
class C(B):
elems = [20, 100]
class D(B):
elems = [4, 5]
Run Code Online (Sandbox Code Playgroud)
目前,Python的默认继承行为是覆盖elems每个后续属性声明中的属性,例如:
A.elems == [1, 2, 3]
B.elems == [1, 2, 3]
C.elems == [20, 100]
D.elems == [4, 5]
Run Code Online (Sandbox Code Playgroud)
我希望能够访问这些值的附加列表.换句话说,我希望能够检索以下列表:
A.collated() == [1, 2, 3]
B.collated() == [1, 2, 3]
C.collated() == [1, 2, 3, 20, 100]
D.collated() == [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做.任何帮助将不胜感激.
在此先感谢,
- B.
django ×2
python ×2
database ×1
dictionary ×1
git ×1
git-config ×1
indexing ×1
inheritance ×1
list ×1
makefile ×1
model ×1
sh ×1
shell ×1
syntax ×1