2011-07-10 22 views
5

He actualizado mi versión de Django a la última cada noche, y obtengo el siguiente error en el administrador;Cómo resolver el error "No se pudo importar django.contrib.syndication.views.feed" en Django admin?

 
Could not import django.contrib.syndication.views.feed. 
View does not exist in module django.contrib.syndication.views. 

tuve este error en varios puntos de vista también, porque, de hecho, django.contrib.syndication.views.feed se desaprobó y se ha eliminado.
que sólo tenía que añadir un

from django.contrib.syndication.views import Feed 

con

from django.contrib.syndication.feeds import Feed 

El problema es que no puedo encontrar ninguna referencia a django.contrib.syndication.views.feed ninguna parte, ni siquiera en la fuente de Django, por lo que no entienden de dónde viene el error y cómo resolverlo.

La fuente directa del error es

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/urlresolvers.py in get_callable, line 100 

pero no puedo encontrar nada allí.

¡Esperando que alguien pueda ayudar!

+0

Descubrí que el origen del problema es, al menos parcialmente, al usar {% comment_form_target%} en mi plantilla. Probablemente surjan algunas adivinanzas dinámicas sobre dónde debe apuntar el formulario, importando el feed en el camino. –

Respuesta

11

user643511 sugirieron que el error podría estar en mi propio código, no en Django. Sin embargo, ella no señaló el problema real (que comprendo porque no proporcioné la información correcta). Sólo después de días de cavar me encontré con que tenía

url(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}), 

en urls.py. Y en su lugar, tuve que usar

url(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.Feed', {'feed_dict': feeds}), 

Ten en cuenta la F mayúscula en las vistas. Fuego.

Así que si alguien pasa con problemas similares, consulte urls.py.

7

Tal vez tenga algo mal en su código, realizo algunas pruebas y el marco de generación de fuentes de alto nivel funciona bien. Sólo tiene que utilizar la clase RSS

 
django.contrib.syndication.views.Feed 

Este es un ejemplo sencillo: En sus modelos


# -*- coding: utf8 -*- 
from django.utils.translation import ugettext as _ 
from django.contrib.syndication.views import Feed 
from django.db import models 

class Concept(models.Model): 
    concept = models.IntegerField(unique=True, primary_key=True, verbose_name=_('Concepto')) 
    description = models.CharField(max_length=255, verbose_name=_('Descripcion')) 

    def __unicode__(self): 
     return "%s" % (self.description or self.concept) 

    class Meta: 
     verbose_name = _('Concepto') 
     verbose_name_plural = _('Conceptos') 
     ordering = ['concept'] 

class LatestEntriesFeed(Feed): 
    title = "My site news" 
    link = "/sitenews/" 
    description = "Updates on changes and additions." 

    def items(self): 
     return Concept.objects.all() 

    def item_code(self, item): 
     return item.code 

    def item_description(self, item): 
     return item.description 

y en su url:


from models import LatestEntriesFeed 

urlpatterns = patterns('', 
    (r'^latest/feed/$', LatestEntriesFeed()),  
) 

resultado:

Mi sitio newshttp: //example.com/sitenews/Updates on changes and addit ions.es-esTue, 12 de julio de 2011 08:18:49 -0000

Espero que ayuden.

+0

Gracias por la respuesta, pero eso no ayuda en absoluto.Como estaba diciendo, el problema que tengo es que no sé dónde está ocurriendo realmente el error, ya que no puedo encontrar ningún archivo en todo mi sistema que importe el feed desde el espacio de nombres incorrecto. En cuanto a su fuente, está claro que no está ejecutando una versión tardía de Django; de lo contrario, su importación daría problemas. de django.contrib.syndication.views import Feed está en desuso. –

+1

Lo siento, resulta que tenía algo de razón después de todo; el error estaba en mi propio código. Tenía una referencia a django.contrib.syndication.views.feed en mi url, en lugar de django.contrib.syndication.views.Feed (Dios está en los detalles). Presentaré mi propia respuesta para quienes pasen en el futuro. –

Cuestiones relacionadas