Ymilij 28.07.2010 14:49
Python — Django CMS 2.1.0 Tutorial Rus
По django не так уж и много документации, по django-cms и того меньше. Ещё огорчает и то, что стабильная версия django-cms работает только с django версии 1.1.X.Так как я люблю всё новое и свежее решил ставить всё самое последнее - django-cms-2.1.0.beta3, django-1.2.1, а питон, к слову, 2.6. Но, из-за отсутствия достаточной документации процесс запуска проекта с django-cms оказался не самым приятным, хотя на самом деле — всё элементарно.
В основе заметки Django CMS Tutorial, распространяемый вместе с последней версией django.
Речь как бы о Django CMS, который есть отдельный продукт на джанге, но не сама джанга. Читайте внимательнее
Вы тогда пишите понятнее. Я, конечно, извиняюсь что может быть написал грубо, но уже не раз натыкался на то, что django называют cms. Поэтому след. раз советую писать примерно так: "CMS основанной на Django, под названием Django CMS". Как-то так. Это лишь пример.
Что писали не Вы? Анонс Ваш, статья по ссылке тоже.
З.Ы. Статью по ссылке не читал.
З.Ы. Статью по ссылке не читал.
Казалось бы старался максимально понятно, просто и наглядно написать, а вот же на.
не всё идеально. Возможно, если бы я прочитал пост в надежде найти что-то новое для себя, у меня бы не возникло таких мыслей :)
полезно. даже если мне на поверхностный просмотр все уже кажется элементарным...
для первого раза почитать - супер.
но
вы где mptt нарыли? в pip есть две версии, в портаже ни одной, какая?. это раз.
во вторых, ради интереса, поменяйте базу на mysql, пожалуйста.
У меня возникла проблемка именно с ней (sqlite - ok, но ясно не то, что надо)
исчерпывающее описание тут
для первого раза почитать - супер.
но
вы где mptt нарыли? в pip есть две версии, в портаже ни одной, какая?. это раз.
во вторых, ради интереса, поменяйте базу на mysql, пожалуйста.
У меня возникла проблемка именно с ней (sqlite - ok, но ясно не то, что надо)
исчерпывающее описание тут
Спасибо.
mptt распространяется вместе с django-cms:
$ ls /usr/lib/python2.6/site*/django_cms*
cms EGG-INFO menus mptt publisher
Работает с mysql. Базу создал так:
CREATE DATABASE testdjango;
GRANT ALL PRIVILEGES ON testdjango.* TO 'root' IDENTIFIED BY 'p23Xy4A'; FLUSH PRIVILEGES;
Затем прописал в settings.py:
DATABASES = {
'default': {
'ENGINE': 'mysql',
'NAME': 'testdjango',
'USER': 'root',
'PASSWORD': 'p23Xy4A',
'HOST': '',
'PORT': '',
}
}
Затем python manage.py syncdb - он создал таблицы, юзера, всё, как положено.
Запустил, проверил, работает.
mptt распространяется вместе с django-cms:
$ ls /usr/lib/python2.6/site*/django_cms*
cms EGG-INFO menus mptt publisher
Работает с mysql. Базу создал так:
CREATE DATABASE testdjango;
GRANT ALL PRIVILEGES ON testdjango.* TO 'root' IDENTIFIED BY 'p23Xy4A'; FLUSH PRIVILEGES;
Затем прописал в settings.py:
DATABASES = {
'default': {
'ENGINE': 'mysql',
'NAME': 'testdjango',
'USER': 'root',
'PASSWORD': 'p23Xy4A',
'HOST': '',
'PORT': '',
}
}
Затем python manage.py syncdb - он создал таблицы, юзера, всё, как положено.
Запустил, проверил, работает.
Что работает?
Модель с деревом создали? Дерево получается?
какая версия MySQLdb?
сделайте, пожалуйста такую, как я выше по ошибке дал, syncdb (оно то отработает...) и покажите show create table *таблица этой модели*
Модель с деревом создали? Дерево получается?
какая версия MySQLdb?
сделайте, пожалуйста такую, как я выше по ошибке дал, syncdb (оно то отработает...) и покажите show create table *таблица этой модели*
dev-python/mysql-python-1.2.3_rc1
dev-db/mysql-5.1.46
Создал приложение testmodulesdjango с вашей моделью.
Прописал в installed app. Сделал syncdb. Запустил сервер, ошибок нет, работает всё вроде без изменений. Модель никак не использовал.
Код, создающий таблицу для модели:
~ $ python manage.py sql testmodulesdjango
dev-db/mysql-5.1.46
Создал приложение testmodulesdjango с вашей моделью.
Прописал в installed app. Сделал syncdb. Запустил сервер, ошибок нет, работает всё вроде без изменений. Модель никак не использовал.
Код, создающий таблицу для модели:
~ $ python manage.py sql testmodulesdjango
BEGIN;
CREATE TABLE `testmodulesdjango_category` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(50) NOT NULL UNIQUE,
`parent_id` integer,
`lft` integer UNSIGNED NOT NULL,
`rght` integer UNSIGNED NOT NULL,
`tree_id` integer UNSIGNED NOT NULL,
`level` integer UNSIGNED NOT NULL
)
;
ALTER TABLE `testmodulesdjango_category` ADD CONSTRAINT `parent_id_refs_id_e7def203` FOREIGN KEY (`parent_id`) REFERENCES `testmodulesdjango_category` (`id`);
COMMIT;
ну еще три шага... :)
ну и версии MySQLdb и
>>> mptt.VERSION
(0, 3, 'pre')
?
то я уже с ума схожу...
python manage.py shell
>>> from **MODELS** import *YOUR_MODEL*as model
>>> root=model(name='root')
>>> root.save()
ну и версии MySQLdb и
>>> mptt.VERSION
(0, 3, 'pre')
?
то я уже с ума схожу...
пардон, версии не прочел. биндинг тот же. ну из того что у меня mysql5.0 думаю ничего не следует..
но фишка то в том, что с dj-сms или без - mptt не работает..
но фишка то в том, что с dj-сms или без - mptt не работает..
При попытке сделать:
>>> from testmodulesdjango.models import Category as model
Ругается, мол:
AlreadyRegistered: The model Category has already been registered.
Что, в прочем, не удивительно, ведь мы сделали:
mptt.register(Category, order_insertion_by=<'name'>)
в модели (или я не прав? - я совсем-совсем новичок в django)
Соответственно, команды:
>>> root=model(name='root')
>>> root.save()
не работают, так как у модели Category имя другое.
Как узнать её имя (не Category ли, случайно?) и имеет ли смысл выполнять вышеупомянутые команды, если модель уже зарегистрирована?
Может быть проблема действительно в том, что у вас почему-то не работает mptt, тогда и:
>>> from **MODELS** import *YOUR_MODEL* as model
>>> root=model(name='root')
>>> root.save()
выполнять не надо?
Как посмотреть версию mptt не пойму.
>>> from testmodulesdjango.models import Category as model
Ругается, мол:
AlreadyRegistered: The model Category has already been registered.
Что, в прочем, не удивительно, ведь мы сделали:
mptt.register(Category, order_insertion_by=<'name'>)
в модели (или я не прав? - я совсем-совсем новичок в django)
Соответственно, команды:
>>> root=model(name='root')
>>> root.save()
не работают, так как у модели Category имя другое.
Как узнать её имя (не Category ли, случайно?) и имеет ли смысл выполнять вышеупомянутые команды, если модель уже зарегистрирована?
Может быть проблема действительно в том, что у вас почему-то не работает mptt, тогда и:
>>> from **MODELS** import *YOUR_MODEL* as model
>>> root=model(name='root')
>>> root.save()
выполнять не надо?
Как посмотреть версию mptt не пойму.
AlreadyRegistered
mptt.register(Category, order_insertion_by=<'name'>)
закомментить ее (нужна только перед syncdb, однажды)
Как посмотреть версию mptt
import mptt
mptt.VERSION
Закоментил mptt.register, проделал вышеописанные команды.
Вывод:
Странные ошибки.
Вывод:
$ python manage.py shell
Python 2.6.5 (release26-maint, Jul 13 2010, 23:02:34)
on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from testmodulesdjango.models import Category as model
>>> root=model(name='root')
>>> root.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib64/python2.6/site-packages/django/db/models/base.py", line 435, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/usr/lib64/python2.6/site-packages/django/db/models/base.py", line 528, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "/usr/lib64/python2.6/site-packages/django/db/models/manager.py", line 195, in _insert
return insert_query(self.model, values, **kwargs)
File "/usr/lib64/python2.6/site-packages/django/db/models/query.py", line 1479, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/lib64/python2.6/site-packages/django/db/models/sql/compiler.py", line 783, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "/usr/lib64/python2.6/site-packages/django/db/models/sql/compiler.py", line 727, in execute_sql
cursor.execute(sql, params)
File "/usr/lib64/python2.6/site-packages/django/db/backends/util.py", line 15, in execute
return self.cursor.execute(sql, params)
File "/usr/lib64/python2.6/site-packages/django/db/backends/mysql/base.py", line 86, in execute
return self.cursor.execute(query, args)
File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 175, in execute
if not self._defer_warnings: self._warning_check()
File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 89, in _warning_check
warn(w<-1>, self.Warning, 3)
Warning: Field 'lft' doesn't have a default value
>>> import mptt
>>> mptt.VERSION
(0, 3, 'pre')
Странные ошибки.
ну приехали. что и требовалось доказать.
апните чтоли вопрос на python.su по ссыле в начале треда...
а то мне никто там не верит.
хз.
апните чтоли вопрос на python.su по ссыле в начале треда...
а то мне никто там не верит.
хз.
Use Rails, Luke!
Рельсы, насколько я их щупал, более моццные, гибкие и удобные, нежели джанга. Да и питоновская идеология меня перестала привлекать давно... Джанга еще слишком молод и недоразвит по сравнению с рубишным решением.
Рельсы, насколько я их щупал, более моццные, гибкие и удобные, нежели джанга. Да и питоновская идеология меня перестала привлекать давно... Джанга еще слишком молод и недоразвит по сравнению с рубишным решением.
Кстати говоря. Django не CMS, а Framework.