Форум сайта python.su
Пробую запустить pythonua под google appEngine.
Использую appengine_helper_for_django-r30.zip.
django_example_20080409.tar.gz работает.
Request Method: GET
Request URL: http://localhost:8080/
Exception Type: AttributeError
Exception Value: 'module' object has no attribute 'quote_name'
Exception Location: C:\gapp\lib\django\django\db\models\query.py in _get_sql_clause, line 477
Traceback (most recent call last):
File "C:\gapp\lib\django\django\core\handlers\base.py" in get_response
77. response = callback(request, *callback_args, **callback_kwargs)
File "G:\from_net\dev\python\examplez\pythonua\site\views.py" in index
32. ex = Exception.objects.all().filter(lang__lang__exact=language).latest('id')
File "C:\gapp\lib\django\django\db\models\query.py" in latest
291. return self._clone(_limit=1, _order_by=('-'+latest_by,)).get()
File "C:\gapp\lib\django\django\db\models\query.py" in get
250. obj_list = list(clone)
File "C:\gapp\lib\django\django\db\models\query.py" in __iter__
108. return iter(self._get_data())
File "C:\gapp\lib\django\django\db\models\query.py" in _get_data
470. self._result_cache = list(self.iterator())
File "C:\gapp\lib\django\django\db\models\query.py" in iterator
174. select, sql, params = self._get_sql_clause()
File "C:\gapp\lib\django\django\db\models\query.py" in _get_sql_clause
477. select = ["%s.%s" % (backend.quote_name(opts.db_table), backend.quote_name(f.column)) for f in opts.fields]
AttributeError at /
'module' object has no attribute 'quote_name'
Environment:
Request Method: GET
Request URL: http://localhost:8080/
Django Version: 0.97-pre-SVN-7928
Python Version: 2.5.2
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.comments',
'site',
'blog',
'sitereg',
'books',
'links',
'articles']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware')
Traceback:
File "G:\from_net\dev\python\examplez\pythonua\django\core\handlers\base.py" in get_response
76. callback, callback_args, callback_kwargs = resolver.resolve(request.path)
File "G:\from_net\dev\python\examplez\pythonua\django\core\urlresolvers.py" in resolve
231. for pattern in self.urlconf_module.urlpatterns:
File "G:\from_net\dev\python\examplez\pythonua\django\core\urlresolvers.py" in _get_urlconf_module
255. raise ImproperlyConfigured, "Error while importing URLconf %r: %s" % (self.urlconf_name, e)
Exception Type: ImproperlyConfigured at /
Exception Value: Error while importing URLconf 'urls': 'ModelOptions' object has no attribute 'db_table'
Офлайн
zip с файлами чего-то не отправился.
вот settings.py
# Django settings for pythonua project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', ‘your_email@domain.com’),
)
MANAGERS = ADMINS
DATABASE_ENGINE = ‘appengine’ # ‘postgresql’, ‘mysql’, ‘sqlite3’ or ‘ado_mssql’.
DATABASE_NAME = ‘pythonua’ # Or path to database file if using sqlite3.
DATABASE_USER = ‘' # Not used with sqlite3.
DATABASE_PASSWORD = ’' # Not used with sqlite3.
DATABASE_HOST = ‘' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ’' # Set to empty string for default. Not used with sqlite3.
# Local time zone for this installation. All choices can be found here:
# http://www.postgresql.org/docs/current/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
TIME_ZONE = ‘America/Chicago’
# Language code for this installation. All choices can be found here:
# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
# http://blogs.law.harvard.edu/tech/stories/storyReader$15
LANGUAGE_CODE = ‘ru’
DEFAULT_CHARSET = ‘utf-8’
SITE_ID = 1
# Absolute path to the directory that holds media.
# Example: “/home/media/media.lawrence.com/”
#MEDIA_ROOT = ‘/webhomes/alafin/pythonua/templates/images’
MEDIA_ROOT = ‘templates/images’
# URL that handles the media served from MEDIA_ROOT.
# Example: "http://media.lawrence.com“
MEDIA_URL = ''
# URL prefix for admin media – CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: ”http://foo.com/media/“, ”/media/“.
ADMIN_MEDIA_PREFIX = ‘/media/’
# Make this unique, and don't share it with anybody.
SECRET_KEY = ‘gl=er_^6&cg+-^d_#5^sddong-&7t3yjnh@5n&(r6$7dy^p6le’
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
‘django.template.loaders.filesystem.load_template_source’,
‘django.template.loaders.app_directories.load_template_source’,
# ‘django.template.loaders.eggs.load_template_source’,
)
MIDDLEWARE_CLASSES = (
‘django.middleware.common.CommonMiddleware’,
# ‘django.contrib.sessions.middleware.SessionMiddleware’,
‘django.contrib.auth.middleware.AuthenticationMiddleware’,
# ‘django.middleware.doc.XViewMiddleware’,
)
TEMPLATE_CONTEXT_PROCESSORS = (
‘django.core.context_processors.auth’,
‘django.core.context_processors.debug’,
‘django.core.context_processors.i18n’,
# ‘django.core.context_processors.media’, # 0.97 only.
# ‘django.core.context_processors.request’,
)
ROOT_URLCONF = ‘urls’
TEMPLATE_DIRS = (
# Put strings here, like ”/home/html/django_templates".
# Always use forward slashes, even on Windows.
#'/webhomes/alafin/pythonua/templates',
‘templates’,
)
INSTALLED_APPS = (
# ‘extensions’,
‘appengine_django’,
‘django.contrib.auth’,
# ‘django.contrib.contenttypes’,
# ‘django.contrib.sessions’,
# ‘django.contrib.sites’,
‘django.contrib.admin’,
‘django.contrib.comments’,
‘site’,
‘blog’,
‘sitereg’,
‘books’,
‘links’,
‘articles’,
)
# settings for sitereg app
AUTH_PROFILE_MODULE = ‘sitereg.UserProfile’
EMAIL_HOST_USER = ‘pyuatest’
EMAIL_HOST_PASSWORD = ‘pytest’
EMAIL_HOST = ‘smtp.mail.ru’
EMAIL_PORT = 25
DEFAULT_FROM_EMAIL = ‘pyuatest@mail.ru’
Офлайн
from django.conf.urls.defaults import *
from django.conf import settings
from blog.models import *
urlpatterns = patterns('',
(r'^admin/', include('django.contrib.admin.urls')),
(r'^images/(?P<path>.*)$', ‘django.views.static.serve’, {'document_root': settings.MEDIA_ROOT}),
(r'^$', ‘site.views.index’, {'num':1 ,'language': ‘ru’}),
(r'^(?P<language>\w{2})/$', ‘site.views.index’, {'num' : 1}),
(r'^(?P<language>\w{2})/(?P<num>\d{1,2})/$', ‘site.views.index’),
#(r'^(?P<language>\w{2})/(?P<id>\d{1,2})$', ‘site.views.index’),
(r'^(?P<language>\w{2})/articles/$', ‘site.views.categories’),
(r'^forum/$', ‘redirect_to’, {'url' : 'http://python.com.ua/forum'}),
(r'^(?P<language>\w{2})/news/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\w{1,2})/(?P<slugefield>+)/$','site.views.news'),
(r'^accounts/', include('sitereg.urls')),
(r'^(?P<language>\w{2})/books/$', ‘books.views.index’),
(r'^(?P<language>\w{2})/links/$', ‘links.views.index’),
(r'^(?P<language>\w{2})/links/(?P<slugefield>+)/$', ‘links.views.category’),
(r'^(?P<language>\w{2})/articles/(?P<categ>\w+)/$', ‘articles.views.index’),
(r'^comments/', include('django.contrib.comments.urls.comments')),
(r'^addnews/$', ‘blog.views.add_news’),
)
Офлайн
На локальной машине работает?
Офлайн
FerromanНет. Это все на локальной машине с установленным appEngine SDK.
На локальной машине работает?
Офлайн
Код модели, я думаю, прояснил бы ситуацию. А ещё лучше с кодом site.views.index.
Офлайн
GAE не поддерживает ORM джанги. Следовательно те проекты которые его используют, не могут быть запущены под GAE. Нужно портирование и адаптация под BigTable.
Офлайн
Хм, то-то я смотрю в джанге должно всё нормально быть…
Офлайн
Код я взял тут и не менял (кроме settings.py, urls.py и может еще какую мелочь). Просто пробовал запускать, то что в ветке “примеры джанго”. Там 9ое сообщение с сылкой http://pythonua.googlecode.com/files/pythonua.zip
В джанге я попробовал, вроде с этим кодом нормально все.
Вопросы становятся такими:
1) Object-relational mapping (aka ORM) в джанго замурован сильно? Т.е. можно ли его (без сильных проблем) реализовать внутри по-дугому оставив тотже интерфейс к нему?
Google App Engine does not provide an SQL database so you cannot use Django's standard Model class.
Т.е. в appEngine своя БД. По-идее если ORM - заменяемый модуль, то нужно просто переписать его на совместимость с гугловской БД?
2) Про хелпер, который я упоминал - We have created a helper that prevents you from needing to worry about most of these differences. The helper works by providing alternative implementations for the portions of Django that do not work with Google App Engine.
Т.е. или я неправильно использую хелпер или хелпер не справляется. Может кто-нибудь успешно использовал этот хелпер http://code.google.com/p/google-app-engine-django/ с django-ORM? Или пожалуйста дайте ссылку где написано что это невозможно.
Офлайн
jedеще почитал разговор в мирке
хелпер не справляется.
Офлайн