从应用程序数据自动生成页面
Automatically generating pages from app data
我是 Django CMS 的新手,想知道执行以下操作的最佳方法是什么。我是 运行 一个 Django CMS 项目和一个自定义应用程序,该应用程序具有针对某些(虚拟)社交活动的 Event
模型。理想情况下,我希望 url ^events/<event_id>/
映射到任何有效 Event
id 值的适当事件页面。这些事件页面应该看起来类似于我的静态页面,特别是使用相同的静态占位符并且(理想情况下)从相同的基本模板文件继承。
实现此目标的最佳方法是什么?从文档中可以看出,插件或 apphook 允许我将应用程序数据附加到 Django CMS 页面,但使用这种方法我将不得不为每个事件手动创建一个 Django CMS 页面。有没有办法避免这种情况?
通常在 SO 上你会被要求展示你到目前为止的尝试,但今天是你的幸运日。
这里有一个存根,说明如何实现您所描述的目标。关于占位符,您可以在文档 here and here.
中找到更多信息
祝你好运!
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 页面,然后就可以开始了。
我是 Django CMS 的新手,想知道执行以下操作的最佳方法是什么。我是 运行 一个 Django CMS 项目和一个自定义应用程序,该应用程序具有针对某些(虚拟)社交活动的 Event
模型。理想情况下,我希望 url ^events/<event_id>/
映射到任何有效 Event
id 值的适当事件页面。这些事件页面应该看起来类似于我的静态页面,特别是使用相同的静态占位符并且(理想情况下)从相同的基本模板文件继承。
实现此目标的最佳方法是什么?从文档中可以看出,插件或 apphook 允许我将应用程序数据附加到 Django CMS 页面,但使用这种方法我将不得不为每个事件手动创建一个 Django CMS 页面。有没有办法避免这种情况?
通常在 SO 上你会被要求展示你到目前为止的尝试,但今天是你的幸运日。
这里有一个存根,说明如何实现您所描述的目标。关于占位符,您可以在文档 here and here.
中找到更多信息祝你好运!
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 页面,然后就可以开始了。