【问题标题】:Automatically generating pages from app data从应用数据自动生成页面
【发布时间】:2021-03-15 01:11:05
【问题描述】:

我是 Django CMS 的新手,我想知道执行以下操作的最佳方法是什么。我正在运行一个 Django CMS 项目以及一个自定义应用程序,该应用程序具有用于某些(虚拟)社交活动的 Event 模型。理想情况下,我希望 url ^events/<event_id>/ 映射到任何有效的 Event id 值的适当事件页面。这些事件页面应该看起来类似于我的静态页面,特别是使用相同的静态占位符并且(理想情况下)从相同的基本模板文件继承。

实现这一目标的最佳方法是什么?从文档中可以看出,插件或 apphooks 将允许我将应用程序数据附加到 Django CMS 页面,但使用这种方法,我必须为每个事件手动创建一个 Django CMS 页面。有没有办法避免这种情况?

【问题讨论】:

    标签: django-cms


    【解决方案1】:

    通常在 SO 上,您会被要求展示您迄今为止尝试过的内容,但今天是您的幸运日??。

    这是一个存根,说明如何实现您所描述的。关于占位符,您可以在文档herehere 中找到更多信息。

    祝你好运!

    models.py

    class Event(models.Model):
        name = models.CharField(max_length=200)
    

    views.py

    from django.views.generic import ListView, DetailView
    
    class EventListView(ListView):
        model = Event
        template_name = "events/listview.html"
    
    class EventDetailView(ListView):
        model = Event
        template_name = "events/detailview.html"
    

    apphook_urls.py

    urlpatterns = [
        path('', EventListView.as_view(), name='event-list'),
        path('<int:pk>/', EventDetailView.as_view(), name='event-detail'),
    ]
    

    cms_apps.py

    from cms.app_base import CMSApp
    from cms.apphook_pool import apphook_pool
    
    
    class EventsAppHook(CMSApp):
        name = "Events"
        app_name = "events
    
        def get_urls(self, *args, **kwargs):
            return ["events.apphook_urls"]
    
    apphook_pool.register(EventsAppHook)
    

    一切都启动并运行后,您将 AppHook 附加到您选择的 cms 页面,您应该一切顺利。

    【讨论】:

    • 这非常有效。我发现了一个 hack,但这看起来是正确的做事方式。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2017-06-14
    • 2018-08-11
    相关资源
    最近更新 更多