【问题标题】:Error: NoReverseMatch when using render_model错误:使用 render_model 时的 NoReverseMatch
【发布时间】:2016-11-22 14:26:09
【问题描述】:

我是 django-cms 的新手,我正在尝试在 cms 之外创建一个占位符。我创建了模型并插入了一些虚拟数据进行测试。然后我创建了一个模板来显示这个模型并检查我是否能够在前端编辑它。这是我遇到错误的 HTML 代码:

{% 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>

我得到的错误是:

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

这个错误在render_model 行中出现。 (我已经注释了每一行以检查异常发生的确切位置。)

我已经在我的列表中添加了一个 url,看看是否可行:

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

但仍然是完全相同的错误。

你知道发生了什么吗?

编辑:

这是我的模型:

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')

更新:

我尝试为这个模型配置管理部分,所以我添加了文件admin.py:(并删除了上面发布的 url)

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)

但我仍然得到同样的错误。

【问题讨论】:

  • 您是否在模板或视图中的任何位置传递pk
  • @jape 我正在传递对象。我还需要通过pk吗?能举个例子吗?
  • 你有没有$的管理员包含? url(r'^admin/', include(admin.site.urls)),
  • @markwalker_ 是 url(r'^admin/', include(admin.site.urls)),
  • @patricia 在添加带有name='news_change' 的 URL 之前,您是否设置了模型管理员? 'cms_myapp_news_change' 是 Django 管理员的 URL 名称,您可以在其中 change 对象来自 news 应用程序的 news 模型。因此,您可能会通过包含您的 URL 来混淆问题。尝试删除它。

标签: django django-models django-templates django-views django-cms


【解决方案1】:

您已经定义了命名空间'news_change',但 django 尝试在 'cms_myapp_news_change' 上反转...无论在哪里发生反转,尝试使其看起来像这样 reverse('cms_myapp:news_change')

确保 'cms_myapp' 已在主项目 url 或 cms_apps.py 中注册(如果它是由应用加载的)。

检查模型方法 get_absolute_url() 或其他试图反向执行的方法。

这只是一个示例,请检查您的反向并注册名称空间。

【讨论】:

  • 问题是这个反转不是我做的。当我打电话给render_model 时发生了一些事情:s
  • 尝试挖掘render_model模板标签源码。我没有使用它,但我已经调查过了,找不到快速的答案:(。同样从你的反向异常你已经在发送 pk,你可以从发送的参数中看到。'Reverse for 'cms_myapp_news_change' with arguments '(5L,)'
猜你喜欢
  • 2014-07-07
  • 1970-01-01
  • 2011-06-26
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2017-08-05
  • 1970-01-01
相关资源
最近更新 更多