App-Integration in Django-CMS

Django, Flask, Bottle, WSGI, CGI…
Antworten
k.marco.1970
User
Beiträge: 46
Registriert: Mittwoch 25. Dezember 2013, 20:46

Hallo zusammen,

ich habe das Django-CMS 3.0 eingerichtet und das klappt soweit, Seiten, Text etc. anzulegen. Nun bietet das CMS die Möglichkeit eine App zu integrieren. Die App selbst funktioniert, wenn man [url]localhost:8000/myapp[/url] aufruft. Man sieht aber nur die App, jedoch nicht das CMS-Menü. Also eigentlich eine total unabhängige Seite, die nicht in das CMS eingebunden ist.

Mit Aufruf von [url]localhost:8000[/url] sieht man die Seite des CMS. Über einen apphook ist die App eingebunden und sie erscheint auch in der Auswahlliste des Edit-Modes der Seite. Allerdings sieht man die App nicht auf der publizierten Seite sondern weiter eine leere Seite mit dem CMS-Menü.

Ich verwende Python 2.7, Django-CMS 3.0, Django 1.6.5.
Ich habe nun mal meine Verzeichnisstruktur, die settings.py und die beiden urls.py (einmal fürs Projekt und einmal für die myapp) angehängt. Kann mir auf Basis dieser Informationen jemand sagen, wie ich richtig integriere?

Verzeichnisstruktur

Code: Alles auswählen

workspace
├── manage.py
├── my_site
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── myapp
│   │   ├── cms_app.py
│   │   ├── cms_app.pyc
│   │   ├── forms.py
│   │   ├── forms.pyc
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── media
│   │   │   └── documents
│   │   │       └── 2014
│   │   │           └── 07
│   │   │               └── 13
│   │   │                   └── Beispieldokument.xlsx
│   │   ├── migrations
│   │   │   ├── 0001_initial.py
│   │   │   ├── 0001_initial.pyc
│   │   │   ├── 0002_initial.py
│   │   │   ├── __init__.py
│   │   │   └── __init__.pyc
│   │   ├── models.py
│   │   ├── models.pyc
│   │   ├── read_xml.py
│   │   ├── read_xml.pyc
│   │   ├── templates
│   │   │   └── myapp
│   │   │       ├── list.html
│   │   │       └── results.html
│   │   ├── urls.py
│   │   ├── urls.pyc
│   │   ├── views.py
│   │   └── views.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── static
│   ├── templates
│   │   ├── base.html
│   │   ├── feature.html
│   │   ├── menu.html
│   │   └── page.html
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── project.db
└── static

settings.py

Code: Alles auswählen

import os
gettext = lambda s: s
"""
Django settings for my_site project.

For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
USE_I18N = False

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'xyz'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []


# Application definition





ROOT_URLCONF = 'my_site.urls'

WSGI_APPLICATION = 'my_site.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases



# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/

LANGUAGE_CODE = 'en'

TIME_ZONE = 'Europe/Berlin'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/my_site/static/'
MEDIA_URL = '/my_site/myapp/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'my_site/myapp/media')
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'my_site', 'static'),
)
SITE_ID = 1

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    'django.template.loaders.eggs.Loader'
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # 'django.middleware.locale.LocaleMiddleware',
    'django.middleware.doc.XViewMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware'
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.i18n',
    'django.core.context_processors.debug',
    'django.core.context_processors.request',
    'django.core.context_processors.media',
    'django.core.context_processors.csrf',
    'django.core.context_processors.tz',
    'sekizai.context_processors.sekizai',
    'django.core.context_processors.static',
    'cms.context_processors.cms_settings'
)

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'my_site', 'templates'),
)

INSTALLED_APPS = (
    'djangocms_admin_style',
    'djangocms_text_ckeditor',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.admin',
    'django.contrib.sites',
    'django.contrib.sitemaps',
    'django.contrib.staticfiles',
    'django.contrib.messages',
    'cms',
    'mptt',
    'menus',
    'south',
    'sekizai',
    'djangocms_style',
    'djangocms_column',
    'djangocms_file',
    'djangocms_flash',
    'djangocms_googlemap',
    'djangocms_inherit',
    'djangocms_link',
    'djangocms_picture',
    'djangocms_teaser',
    'djangocms_video',
    'reversion',
    'my_site',
    'my_site.myapp',
)

LANGUAGES = (
    ## Customize this
    ('en', gettext('en')),
    ('de', gettext('de')),
)

CMS_LANGUAGES = {
    ## Customize this
    'default': {
        'public': True,
        'hide_untranslated': False,
        'redirect_on_fallback': True,
    },
    1: [
        {
            'public': True,
            'code': 'en',
            'hide_untranslated': False,
            'name': gettext('en'),
            'redirect_on_fallback': True,
        },
        {
            'public': True,
            'code': 'de',
            'hide_untranslated': False,
            'name': gettext('de'),
            'redirect_on_fallback': True,
        },
    ],
}

CMS_TEMPLATES = (
    ## Customize this
    ('page.html', 'Page'),
    ('feature.html', 'Page with Feature')
)

CMS_PERMISSION = True

CMS_PLACEHOLDER_CONF = {}

DATABASES = {
    'default':
        {'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'project.db', 'HOST': 'localhost', 'USER': '', 'PASSWORD': '', 'PORT': ''}
}

my_site - urls.py

Code: Alles auswählen

from django.conf.urls import *  # NOQA
from django.conf.urls.i18n import i18n_patterns
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin
from django.conf import settings
from cms.sitemaps import CMSSitemap
from django.conf.urls import patterns, include, url
# from django.conf import settings
from django.conf.urls.static import static
from django.views.generic import RedirectView

admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),  # NOQA
    #url(r'^myapp/', include('my_site.myapp.urls')),
    url(r'^$', RedirectView.as_view(url='/myapp/list/')), # Just for ease of use.
    #url(r'^myapp/', include('my_site.myapp.urls', namespace='myapp')),
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap',
        {'sitemaps': {'cmspages': CMSSitemap}}),
    url(r'^', include('cms.urls')),
)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

# This is only needed when using runserver.
if settings.DEBUG:
    urlpatterns = patterns('',
        url(r'^admin/', include(admin.site.urls)),  # NOQA
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve',  # NOQA
            {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
        #url(r'^myapp/', include('my_site.myapp.urls')),
        # url(r'^$', RedirectView.as_view(url='/myapp/list/')), # Just for ease of use.
        #url(r'^myapp$', RedirectView.as_view(url='/myapp/list/')), # Just for ease of use.
        url(r'^', include('cms.urls')),
        ) + staticfiles_urlpatterns() + urlpatterns  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)# NOQA

my_site - myapp - urls.py

Code: Alles auswählen

# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url

urlpatterns = patterns('my_site.myapp.views',
    url(r'^list/$', 'list', name='list'),
)
Viele Grüße, Marco
k.marco.1970
User
Beiträge: 46
Registriert: Mittwoch 25. Dezember 2013, 20:46

Hier habe ich zwei Bilder zu dem was man im Moment sieht:
im CMS (localhost:8000)
Bild

und bei direktem Aufruf (localhost:8000/myapp) --> und das soll ja eigentlich auch im CMS erscheinen unter dem Menü
Bild
k.marco.1970
User
Beiträge: 46
Registriert: Mittwoch 25. Dezember 2013, 20:46

Hallo nochmal. Leider hat mir noch keiner einen Tip geben können. Deshalb meine Frage: ist mein Problem nicht ausreichend formuliert? Benötigt jemand weitere Codeteile?
Das Tut nach dem ich mich gerichtet habe ist hier zu finden http://www.youtube.com/watch?v=Dj8dhgmzlFM. Dort wird auch eine App in Django-CMS integriert. Die App war erst unabhängig und wurde dann in das CMS eingebunden.
Antworten