ошибка django cms apphook - PullRequest
       13

ошибка django cms apphook

1 голос
/ 31 марта 2011

Я учу джанго-смс. Я попытался создать пользовательский плагин, который оказался довольно успешным, но когда я попытался подключить мой пользовательский плагин к apphook, он выдал ошибку: 1001 *

Нет модуля с именем urls ,

Я следовал руководству, приведенному в документации по сайтам django cms, и создал файл cms_app.py. В настоящее время в моем каталоге приложений есть все файлы, необходимые для создания собственного плагина для django cms, и дополнительный файл cms_app.py.

Что-то не так с настройкой URL или мне нужно создать новый файл urls.py внутри каталога моего приложения?

Мой файл cms_app.py в точности совпадает с приведенным в руководстве.

Я создал проект myproject с помощью команды -

python django-admin.py startproject MyProject

После обращения к руководству, данному для cms, я сначала создал плагин с помощью базовой команды

python manage.py startapp first

Теперь плагин работает на отлично, а структура каталогов перед попыткой apphook была

first/
    __init__.py
    cms_plugins.py
    models.py
    tests.py
    views.py

Теперь, после попытки подключить приложение к apphook, структура каталогов:

first/
    __init__.py
    cms_app.py
    cms_plugins.py
    models.py
    tests.py
    views.py

Мой cms_app.py выглядит следующим образом:

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from django.utils.translation import ugettext_lazy as _

class FirstApp(CMSApp):
    name = _("First App") # give your app a name, this is required
    urls = ["first.urls"] # link your app to url configuration(s)

apphook_pool.register(FirstApp) # register your app

У меня есть файл urls.py в папке myproject, и он выглядит следующим образом:

from django.conf.urls.defaults import *
from django.contrib import admin
from django.conf import settings


# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'myproject.views.home', name='home'),
    # url(r'^myproject/', include('myproject.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
        url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('cms.urls')),

)

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

Я перезапустил сервер, как упоминалось в руководстве, но безуспешно. Любые идеи относительно того, что не так с моим простым приложением?!

РЕДАКТИРОВАТЬ - 1 Мой файл просмотров выглядит следующим образом:

from django.http import HttpResponse

def index(request):
    “””Generate the context for the main summary page”””
    return render_to_response(‘first/first.html’)

Редактировать - 2 Я изменил свой urls.py внутри первой папки приложения на это:

from django.conf.urls.defaults import *
from django.contrib import admin
from django.conf import settings


# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'myproject.views.home', name='home'),
    # url(r'^myproject/', include('myproject.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
        #url(r'^admin/', include(admin.site.urls)),
    url(r'^first/$', include('first.views.index')),

)

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

Но теперь я получаю эту ошибку:

SyntaxError at /

Non-ASCII character '\xe2' in file /home/naveen/django_projects/myproject/first/views.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (views.py, line 4)

Request Method:     GET
Request URL:    http://localhost:8000/
Django Version:     1.3
Exception Type:     SyntaxError
Exception Value:    

Non-ASCII character '\xe2' in file /home/naveen/django_projects/myproject/first/views.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (views.py, line 4)

Exception Location:     /usr/local/lib/python2.6/dist-packages/django/utils/importlib.py in import_module, line 35
Python Executable:  /usr/bin/python
Python Version:     2.6.6
Python Path:    

['/home/naveen/django_projects/myproject',
 '/usr/local/lib/python2.6/dist-packages/pip-0.8.3-py2.6.egg',
 '/usr/local/lib/python2.6/dist-packages',
 '/usr/local/lib/python2.6/dist-packages/django_evolution-0.6.2-py2.6.egg',
 '/usr/lib/python2.6',
 '/usr/lib/python2.6/plat-linux2',
 '/usr/lib/python2.6/lib-tk',
 '/usr/lib/python2.6/lib-old',
 '/usr/lib/python2.6/lib-dynload',
 '/usr/local/lib/python2.6/dist-packages',
 '/usr/lib/python2.6/dist-packages',
 '/usr/lib/python2.6/dist-packages/PIL',
 '/usr/lib/python2.6/dist-packages/gst-0.10',
 '/usr/lib/pymodules/python2.6',
 '/usr/lib/python2.6/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.6/gtk-2.0']

Server time:    Thu, 31 Mar 2011 11:00:41 -0500

Я отредактировал URL-адреса и представления, но теперь я получаю эту ошибку.

NameError at /first/

global name 'render_to_response' is not defined

Request Method:     GET
Request URL:    http://localhost:8000/first/?preview
Django Version:     1.3
Exception Type:     NameError
Exception Value:    

global name 'render_to_response' is not defined

Exception Location:     /home/naveen/django_projects/myproject/first/views.py in index, line 5
Python Executable:  /usr/bin/python
Python Version:     2.6.6
Python Path:    

['/home/naveen/django_projects/myproject',
 '/usr/local/lib/python2.6/dist-packages/pip-0.8.3-py2.6.egg',
 '/usr/local/lib/python2.6/dist-packages',
 '/usr/local/lib/python2.6/dist-packages/django_evolution-0.6.2-py2.6.egg',
 '/usr/lib/python2.6',
 '/usr/lib/python2.6/plat-linux2',
 '/usr/lib/python2.6/lib-tk',
 '/usr/lib/python2.6/lib-old',
 '/usr/lib/python2.6/lib-dynload',
 '/usr/local/lib/python2.6/dist-packages',
 '/usr/lib/python2.6/dist-packages',
 '/usr/lib/python2.6/dist-packages/PIL',
 '/usr/lib/python2.6/dist-packages/gst-0.10',
 '/usr/lib/pymodules/python2.6',
 '/usr/lib/python2.6/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.6/gtk-2.0']

Server time:    Thu, 31 Mar 2011 14:50:32 -0500

1 Ответ

1 голос
/ 31 марта 2011

У вас нет модуля first.urls с URL-адресами вашего «первого» приложения.Рядом с файлом first/models.py создайте файл first/urls.py, содержащий шаблоны URL для «первого» приложения.

Для представлений, которые вы задаете в своих вопросах, urls.py должен выглядеть примерно так:

from django.conf.urls.defaults import *
from first.views import index

urlpatterns = patterns('',
    url(r'^$', index),
)

Также обратите внимание, что в ваших представлениях вы используете нестандартные символы кавычек, это должно выглядеть так:

from django.http import HttpResponse

def index(request):
    """Generate the context for the main summary page"""
    return render_to_response("first/first.html")
...