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) 需要附加到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)
如何实现这一目标?
我需要能够在我的应用程序深处访问Tornado中当前正在执行的Web请求,而不是通过我的所有方法传递它.首次收到请求时,我想为其分配一个跟踪ID,然后每次记录一条消息时,我都希望将其包含在日志记录信息中.
我可以在Tornado中使用某些全局信息来识别当前正在处理的请求吗?
谢谢!
我已经使用与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)
显然数据已完成,但我无法接收该数据。
我在这里做错了什么?
我在我的代码中使用pymongo连接到mongodb.我正在编写一个谷歌分析类应用程序.我的数据库结构就像每个新网站一样,我创建了一个新的数据库.因此,当有人注册网站时,我创建了一个具有该名称的新数据库,但是当注销网站时,我希望删除数据库.我删除了所有集合,但仍然无法删除数据库
因此,数据库列表正在变得非常庞大.当我做
client = MongoClient(host=MONGO_HOST,port=27017,max_pool_size=200)
client.database_names()
Run Code Online (Sandbox Code Playgroud)
我看到超过1000个应用列表.其中许多只是空数据库.有没有办法删除mongo数据库?