обратный URL-адрес Django к объекту, а не к просмотру.возможный? - PullRequest
2 голосов
/ 20 марта 2012

У меня есть набор URL-адресов, для которых я хотел бы получить модель django, связанную с этим URL-адресом, а не представление django, которое делает диспетчер обратного URL-адреса .Код в идеале должен выглядеть примерно так:

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

Поскольку URL-адреса, которые я хотел бы найти, имеют уникальные модели, связанные с ними (через @permalink декоратор ), похоже,это возможно, но мой Google Skillz приходят с пустыми руками.Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ В случае, если это помогает в мозговом штурме решений, я извлекаю эти URL из Google Analytics для всех сообщений блога и хочу динамически отображать наиболее часто просматриваемые страницы.Сам по себе URL полезен, но я хотел бы получить заголовок, тизер и т. Д. Для каждого сообщения в блоге для отображения, и все это хранится в базе данных.

1 Ответ

3 голосов
/ 20 марта 2012

Если вы пытаетесь создать карту сайта; есть приложение sitemaps contrib .

Если вы пытаетесь распечатать все URL-адреса в хорошем формате, см. этот ответ .

Я пытаюсь придумать причину такой возможности, но она ускользает от меня. Однако, это должно делать то, что вы хотите (не проверено):

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...