gpt4 book ai didi

python - Djangocms 中的自定义 View ?

转载 作者:太空狗 更新时间:2023-10-30 02:34:52 26 4
gpt4 key购买 nike

我还没有找到令人满意的方法:我有一个运行良好的 djangocms 设置。但我需要将 CMS 外部表格中的内容添加到我的主页,并在模板上呈现该内容。我可以这样做,但是在 CMS 中编辑 urls.py 以像这样使用我的 View ...

url(r'^', 'myapp.views.slideshow_info'),

... 从 CMS 中排除任何内容。我知道我只是让我的自定义 View 适应 CMS 的 View 正在做的事情,但我如何实现这一点?

目前我的应用的 View 显示:

from myapp.models import model1, model2

def slideshow_info(request):
return render_to_response('index.html', {'slideshow_list' : model1.objects.all()})

非常感谢

最佳答案

您可以将自定义应用程序实例挂接到任何 Django-CMS 页面。这是有关如何执行此操作的文档:http://docs.django-cms.org/en/2.1.3/extending_cms/app_integration.html#app-hooks不应该需要更改基本 url 模式以专门将/重新路由到您的 View 。

在自定义应用程序 Hook 可用之前,我会完成您尝试使用模板标签执行的操作。

希望对您有所帮助。

跟进

好吧,在最近完成的网站中,我不得不 Hook 一个名为“portfolio”的应用程序以在 Django-CMS 网站的主页上显示图像。

以下是代码的相关部分:

#portfolio/cms_app.py
from django.utils.translation import ugettext_lazy as _

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool

class PortfolioAppHook(CMSApp):
name = _('Portfolio')
urls = ['portfolio.urls']

apphook_pool.register(PortfolioAppHook)


#portfolio/urls.py
from django.conf.urls.defaults import *

urlpatterns = patterns('portfolio.views',
url(r'^(?P<slug>[-\w]+)/$', 'project_detail', name='project_detail'),
url(r'^$', 'portfolio_index', name='portfolio_index'),
)

#portfolio/views.py
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, render

from portfolio.models import Project


def portfolio_index(request):
project_objects = Project.for_public if request.user.is_anonymous() \
else Project.objects
projects = project_objects.all().select_related(depth=1)
return render('portfolio/index.html',
{'projects' : projects}, request)


def project_detail(request, slug):
project = get_object_or_404(Project, slug=slug)
if not project.public and request.user.is_anonymous():
return HttpResponseRedirect('/?login=true')
return render('portfolio/project_detail.html',
{'project' : project}, request)

#urls.py (base urls)
from django.conf import settings
from django.conf.urls.defaults import *
from django.contrib import admin

from views import login_user, logout_user

admin.autodiscover()

urlpatterns = patterns('',
(r'^admin/filebrowser/', include('filebrowser.urls')),
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/', include(admin.site.urls)),
(r'^tinymce/', include('tinymce.urls')),
url(r'^login/$', login_user, name='login_user'),
url(r'^logout/$', logout_user, name='logout_user'),
(r'^', include('sorl.thumbnail.urls')),
(r'^', include('cms.urls')),
)

if settings.SERVE_STATIC_MEDIA:
urlpatterns += patterns('',
(r'^' + settings.MEDIA_URL.lstrip('/'), include('appmedia.urls')),
) + urlpatterns

从这个工作示例中可以看出,我没有更改基本 URL 以适应主页 View ,而是通过 cms_app.py 将我的 Portfolio 应用程序的 URL 提供给 Django-CMS

希望这能让你继续前进。

关于python - Djangocms 中的自定义 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5964973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com