python – django-cms:如何从与之关联的应用程序中获取页面

python – django-cms:如何从与之关联的应用程序中获取页面,第1张

概述鉴于此apphook: class NewsHook(CMSApp): name = _("News") urls = ["apps.news.urls"]apphook_pool.register(NewsHook) 和apps.news.models中的这个模型: class Article(models.Model): title = models.CharFie 鉴于此apphook:

class NewsHook(CMSApp):    name = _("News")    urls = ["apps.news.urls"]apphook_pool.register(NewsHook)

和apps.news.models中的这个模型:

class Article(models.Model):    Title = models.CharFIEld(max_length=255)    ...

是否可以引用apphook关联的页面,例如,关于文章的方法?

从模型方面来说,我已经达到了article._Meta.app_label或article._Meta.app_config.verbose_name,但这只分别产生了’news’和’News’.

我从https://github.com/divio/django-cms/blob/7888ab8421bb836c8f7a1127d9a2bf4d4bbdf23e/cms/models/pagemodel.py#L82知道可以通过page.application_urls访问页面的apphook,这给了我’u’NewsHook’.

但我错过了一个链接.

我想我可以通过application_urls字段过滤Pages并查找与我的article._Meta.app_config.verbose_name匹配,但这既不是故障安全也不是漂亮.

有什么想法更好的方法吗?

解决方法 我知道这个问题已经有一年了,可能OP已经弄明白了,但是我遇到了类似的问题,我通过直接在方法上引用apphook解决了这个问题.

from applications.CMS_apps import ApplicationAppHookfrom CMS.models.pagemodel import Pageclass Application(models.Model):    def related_CMS_page(self):        return Page.objects.filter(application_namespace=ApplicationAppHook.app_name).public().first()

我更进一步,创建了一个使用application_namespace值来检索页面的模板标签

from CMS.models.pagemodel import Page@register.assignment_tag()def get_page_by_namespace(application_namespace_str):    try:        return Page.objects.filter(application_namespace=application_namespace_str).public().first()    except AttributeError:        # EAFP ;)        return None

在模板上:

{% get_page_by_namespace 'applications_apphook' as page %}{% if page %}    {{ page.get_menu_Title }}    {# Official Django CMS templateTags also works in this instance,i.e. {% page_attribute "page_Title" page %} but it seems a bit redundant to me #}{% endif %}
总结

以上是内存溢出为你收集整理的python – django-cms:如何从与之关联的应用程序获取页面全部内容,希望文章能够帮你解决python – django-cms:如何从与之关联的应用程序中获取页面所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1197553.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存