将django url反向对象,而不是查看。可能?

时间:2012-03-20 15:05:26

标签: django

我有一组网址,我想要检索与此网址相关联的django模型,而不是reverse URL Dispatcher does的django视图。理想情况下,代码看起来像这样:

urls_to_lookup = get_urls_to_lookup()
models = []
for url in urls_to_lookup:
    model = retrieve_django_model(url)
    models.append(model)

由于我想要查找的网址具有与之关联的独特模型(通过@permalink decorator),看起来这是可能的,但我的谷歌技能空手而归。谢谢你的帮助!

编辑如果它有助于头脑风暴解决方案,我会从Google Analytics中为所有博客帖子提取这些网址,并且我想动态显示最常查看的网页。 URL本身很有帮助,但我想为每个博客帖子抓取标题,预告片等以供显示,并且全部存储在数据库中。

1 个答案:

答案 0 :(得分:3)

如果您要创建站点地图;这是sitemaps contrib app

如果您尝试以漂亮的格式打印出所有网址,请参阅this answer

我试图想出有这样一个功能的原因,但它逃脱了我。但是,这应该做你想要的(未测试):

from django.db import models

def retrieve_django_model(url):
    m_instances = [m for m in models.get_models() \
                     if m.objects.all().count()]
    for m in m_instances:
        if m.objects.all().order_by('?')[0].get_absolute_url() == url:
            return m
        else:
            return None

由于我们只能从实例而不是模型中获取绝对URL,因此初始列表推导过滤掉那些没有实例的模型,因此我们无法获取绝对URL。