小编sta*_*alk的帖子

Python urlparse.parse_qs unicode url

urlparse.parse_qs对于解析url参数非常有用,它可以通过简单的ASCII url工作str.所以我可以解析一个查询,然后使用urllib.urlencode解析后的数据构建相同的路径:

>>> import urlparse
>>> import urllib
>>>
>>> path = '/?key=value' #path is str
>>> query = urlparse.urlparse(path).query
>>> query
'key=value'
>>> query_dict = urlparse.parse_qs(query)
>>> query_dict
{'key': ['value']}
>>> '/?' + urllib.urlencode(query_dict, doseq=True)
'/?key=value' # <-- path is the same here
Run Code Online (Sandbox Code Playgroud)

当url包含百分比编码的非ASCII参数时,它也可以正常工作:

>>> value = urllib.quote(u'????????'.encode('utf8'))
>>> value
'%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5'
>>> path = '/?key=%s' % value
>>> path
'/?key=%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5'
>>> query = urlparse.urlparse(path).query
>>> query
'key=%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5'
>>> query_dict = urlparse.parse_qs(query)
>>> query_dict
{'key': …
Run Code Online (Sandbox Code Playgroud)

python django urlencode urlparse

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

Django queryset附加或注释相关的对象字段

需要附加到queryset结果相关的对象字段.

楷模:

class User(models.Model):
    name = models.CharField(max_length=50)
    friends = models.ManyToManyField('self', through='Membership',
        blank=True, null=True, symmetrical=False)


class Membership(models.Model):
    status = models.CharField(choices=SOME_CHOICES, max_length=50)
    from_user = models.ForeignKey(User, related_name="member_from")
    to_user = models.ForeignKey(User, related_name="member_to")
Run Code Online (Sandbox Code Playgroud)

我可以做这个:

>>> User.objects.all().values('name', 'member_from__status')
[{'member_from__status': u'accepted', 'name': 'Ann'}, {'member_from__status': u'thinking', 'name': 'John'}]
Run Code Online (Sandbox Code Playgroud)

'member_from__status'包含我需要的信息.但与此同时,我还需要一个模型实例.

我想要的是:

>>> users_with_status = User.objects.all().do_something('member_from__status')
>>> users_with_status
[<User 1>, <User 2>]

>>> users_with_status[0] # <-- this is an object, so i can access to all its methods
Run Code Online (Sandbox Code Playgroud)

queryset中的每个实例都有一个'member_from__status'字段,其中包含相应的值:

>>> users_with_status[0].member_from__status
u'accepted'
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

django django-models django-queryset

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

在Tornado中全局访问Web请求

我需要能够在我的应用程序深处访问Tornado中当前正在执行的Web请求,而不是通过我的所有方法传递它.首次收到请求时,我想为其分配一个跟踪ID,然后每次记录一条消息时,我都希望将其包含在日志记录信息中.

我可以在Tornado中使用某些全局信息来识别当前正在处理的请求吗?

谢谢!

python tornado

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

Django celery 在检查数据是否准备好时总是返回 false

我已经使用与rabbitmq一起运行的Celery设置了Django。

我在我的项目中实现了以下示例:http://docs.celeryproject.org/en/master/django/first-steps-with-django.html

当我在两个终端窗口中运行简单测试时,结果如下:

# Terminal 1
>>> from Exercise.tasks import *
>>> result = add.delay(2,3)
>>> result
<AsyncResult: e6c92297-eea2-4f99-8902-1446ac74a6bb>
>>> result.ready()
False

# Terminal 2
$ celery -A Website3 worker -l info
[2014-10-02 14:39:59,269: INFO/MainProcess] Received task: Exercise.tasks.add[464249dd-ab89-4099-badd-9190a147310f]
[2014-10-02 14:39:59,271: INFO/MainProcess] Task Exercise.tasks.add[464249dd-ab89-4099-badd-9190a147310f] succeeded in 0.0010875929147s: 5
Run Code Online (Sandbox Code Playgroud)

显然数据已完成,但我无法接收该数据。

我在这里做错了什么?

python django rabbitmq celery

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

如何删除pymongo.Database.Database对象

我在我的代码中使用pymongo连接到mongodb.我正在编写一个谷歌分析类应用程序.我的数据库结构就像每个新网站一样,我创建了一个新的数据库.因此,当有人注册网站时,我创建了一个具有该名称的新数据库,但是当注销网站时,我希望删除数据库.我删除了所有集合,但仍然无法删除数据库

因此,数据库列表正在变得非常庞大.当我做

client = MongoClient(host=MONGO_HOST,port=27017,max_pool_size=200)
client.database_names()
Run Code Online (Sandbox Code Playgroud)

我看到超过1000个应用列表.其中许多只是空数据库.有没有办法删除mongo数据库?

python mongodb pymongo

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