首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Djangocms中的自定义视图?

Djangocms中的自定义视图?
EN

Stack Overflow用户
提问于 2011-05-11 13:23:17
回答 1查看 5.4K关注 0票数 4

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

代码语言:javascript
运行
复制
url(r'^', 'myapp.views.slideshow_info'),

..。从CMS中排除任何内容。我知道我只是得到了我的自定义视图来适应CMS的视图所做的事情,但是我如何实现这一点呢?

目前,我的应用程序的视图显示:

代码语言:javascript
运行
复制
from myapp.models import model1, model2

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

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2011-05-11 14:09:02

您可以将自定义的应用实例连接到任何Django-CMS页面。下面是关于如何这样做的文档:http://docs.django-cms.org/en/2.1.3/extending_cms/app_integration.html#app-hooks,您不需要将基本url模式更改为特定的重新路由/到您的视图。

在定制的应用挂钩可用之前,我会完成你试图用模板标签做的事情。

希望这能帮到你。

后续行动

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

以下是代码的相关部分:

代码语言:javascript
运行
复制
#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以适应主页视图,而是通过cms_app.py向Django-CMS提供了我的投资组合应用程序的URL。

希望这能让你走。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5964973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档