2

Ich bin ein Neuling in Django-cms und ich versuche, einen Platzhalter außerhalb der cms zu erstellen. Ich habe das Modell erstellt und einige Dummy-Daten zum Testen eingefügt. Dann habe ich eine Vorlage erstellt, um dieses Modell anzuzeigen und überprüft, ob ich es im Frontend bearbeiten konnte. Hier ist mein HTML-Code, wo ich erhalte eine Fehlermeldung:Fehler: NoReverseMatch bei der Verwendung von render_model

{% load i18n staticfiles thumbnail cms_tags %} 

<article class="article"> 

    <h2> 
     {% render_model article "title" %} 
    </h2> 

    <p>{{ article.creation_date|date }}</p> 

    {% if detail_view %} 
     {% render_placeholder article.content language placeholder_language %} 
    {% endif %} 
</article> 

Der Fehler Ich erhalte, ist dies:

NoReverseMatch at /en/news/ 
Reverse for 'cms_myapp_news_change' with arguments '(5L,)' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

Und dieser Fehler hapening in der render_model Linie. (Ich habe jede Zeile kommentiert zu prüfen, wo genau die Ausnahme auftritt.)

Ich habe eine URL zu meiner Liste hinzugefügt, um zu sehen, ob funktionieren würde:

url(r'^news/(?P<pk>\d+)/$', login_required(v_index.news), name='news_change') 

Aber immer noch mit den exakt gleichen Fehlern.

Wissen Sie, was los ist?

EDIT:

Hier ist mein Modell:

class News(models.Model): 
    id = models.AutoField(db_column='ID', primary_key=True) 

    title = models.TextField(verbose_name=_(u'Title'), db_column='TITLE') 

    description = models.TextField(verbose_name=_(u'Description'), db_column='DESCRIPTION') 

    creation_date = models.DateTimeField(db_column='CREATION_DATE', verbose_name=_(u'Creation Date'), auto_now_add=True) 

    content = PlaceholderField('news_content', 
           related_name='news_content') 

    class Meta: 
     app_label = 'cms_myapp' 
     ordering = ['-creation_date'] 
     verbose_name = _(u'New') 
     verbose_name_plural = _(u'News') 

UPDATE:

Ich habe versucht, den Admin-Teil für dieses Modell so zu konfigurieren, habe ich die Datei admin.py: (und entfernt die URL geschrieben oben)

from cms.admin.placeholderadmin import FrontendEditableAdminMixin 
from django.contrib import admin 

from cms_myapp import models 


class NewsAdmin(FrontendEditableAdminMixin,admin.ModelAdmin): 
    frontend_editable_fields = ("title", "description") 


admin.site.register(models.News, NewsAdmin) 

Aber immer noch bekomme ich den gleichen Fehler.

+0

Übergeben Sie den 'pk' irgendwo in Ihrer Vorlage oder Ansicht? – jape

+0

@jape Ich passiere das Objekt. Muss ich das PK auch übergeben? Kannst du ein Beispiel geben? – patricia

+0

Hast du das Admin-Include ohne das '$'? 'url (r '^ admin /', include (admin.site.urls)),' –

Antwort

0

Sie haben Namespace 'news_change' definiert, aber Django versucht, auf 'cms_myapp_news_change' rückgängig zu machen ... Wo immer Reverse passiert, versuchen Sie, es so aussehen zu lassen reverse('cms_myapp:news_change').

Stellen Sie sicher, 'cms_myapp' ist in Hauptprojekt URLs oder cms_apps.py registriert, wenn es von einer App geladen wird.

Überprüfen Sie die Modellmethode get_absolute_url() oder andere, die versuchen, dies umzukehren.

Dies ist nur ein Beispiel, überprüfen Sie Ihre Rückseite und Registrierung napacesace.

+0

Das Problem ist, dass diese Umkehr nicht von mir gemacht wird. Es passiert etwas, wenn ich 'render_model' anrufe: s – patricia

+0

Versuchen Sie, in den' template tag 'Quellcode des' render_model' zu graben. Ich habe es nicht verwendet, aber ich habe es untersucht und konnte keine schnelle Antwort finden :(. Auch von Ihnen Reverse Exception Sie senden bereits pk, können Sie von Argumenten gesendet sehen. ''Reverse für' cms_myapp_news_change ' mit Argumenten "(5L,)" –