Django CMS 2.1.0应用程序扩展NoReverseMatch模板语法

2024-05-13 05:49:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为Django CMS编写一个自定义应用程序,但是在管理员中查看已发布的条目时出现以下错误:

TemplateSyntaxError at /admin/cmsplugin_publisher/entry/

Caught NoReverseMatch while rendering: Reverse for 'cmsplugin_publisher_entry_detail' with arguments '()' and keyword arguments '{'slug': u'test-german'}' not found.

我可以让应用程序工作,如果我在我的主应用程序中给应用程序一个网址网址.py,但这将应用程序修复到一个必需的URL,我只想扩展Django CMS,这样应用程序就会从它添加到的任何页面来。在

模型.py绝对URL模式

    @models.permalink
    def get_absolute_url(self):
        return ('cmsplugin_publisher_entry_detail', (), {
            'slug': self.slug})

网址/条目.py

^{pr2}$

视图/条目.py

from django.views.generic.list_detail import object_list
from cmsplugin_publisher.models import Entry
from cmsplugin_publisher.views.decorators import update_queryset

entry_index = update_queryset(object_list, Entry.published.all)

视图/装饰工.py

def update_queryset(view, queryset, queryset_parameter='queryset'):
    '''Decorator around views based on a queryset passed in parameter which will force the update despite cache
    Related to issue http://code.djangoproject.com/ticket/8378'''

    def wrap(*args, **kwargs):
        '''Regenerate the queryset before passing it to the view.'''
        kwargs[queryset_parameter] = queryset()
        return view(*args, **kwargs)
    return wrap

这里解释了与Django CMS的应用程序集成:http://github.com/divio/django-cms/blob/master/cms/docs/app_integration.txt

问题可能是我没有正确返回RequestContext,因为我在应用程序中使用的是通用视图和自定义的mis。在

CMS应用程序扩展名py文件:

cms公司_应用程序副本

from django.utils.translation import ugettext_lazy as _

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from cmsplugin_publisher.settings import APP_MENUS

class PublisherApp(CMSApp):
    name = _('Publisher App Hook')
    urls = ['cmsplugin_publisher.urls']

apphook_pool.register(PublisherApp)

任何一个有价值的指标,这是一个很难破解的难题!在


Tags: djangofrompyimport应用程序cmsplugincmsupdate
3条回答

我要再次检查urls/entries.py是否实际被导入到某个地方,否则它将无法获得反向匹配。在

更新:

好的,我想你的错误源于get_absolute_url

@models.permalink
def get_absolute_url(self):
    return ('cmsplugin_publisher_entry_detail', (), {'slug': self.slug})

我怀疑这是因为它最终调用了object_detail,它需要一个位置参数queryset(参见django/views/generic/list)_细节.py). 您可以尝试将其更改为:

^{pr2}$

看起来这是Django cms2.1.0beta3中URLconf解析器中的一个bug,它是fixed in dev。只有在应用程序中包含其他urlconf时才会出现此错误。在

相关问题 更多 >