2012-03-20 3 views
2

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

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

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

EDIT В случае, если это помогает мозговым штурмам, я извлекаю эти URL из Google Analytics для всех сообщений в блогах, и я хочу динамически отображать наиболее часто просматриваемые страницы. Сам URL-адрес полезен, но я хотел бы получить название, тизер и т. Д. Для каждого сообщения в блоге для отображения, и все это хранится в базе данных.

+1

'@ permalink' на самом деле просто обертка вокруг' reverse'. Это в основном означает «принять возвращаемое значение этого метода и передать его в« обратный ». Он не создает какой-либо реестр объектов и их URL-адресов. –

+0

да, но это было бы неплохо [в 0.00001% раз вам это нужно, как я :)) – dino

ответ

3

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

Если вы пытаетесь распечатать все URL-адреса в хорошем формате, см. 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.

+0

Создание отображения вручную определенно работает. надеялся, что есть лучший способ напрямую запросить db или что-то – dino

+0

, также обратите внимание на правильное использование этого вопроса. Я думал, что я уточню, если это вызвало некоторые идеи для вас. спасибо за вход! – dino

Смежные вопросы