Ymilij 28.07.2010 14:49

PythonDjango 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 django-cms Gentoo Linux python
+ 3 -
Похожие Поделиться

bosha 28.07.2010 19:43 #
Я правда не знаю где Вы ищите документацию, но вот я почему-то знаю как минимум два места, где можно получить исчерпывающую информацию по django.

Кстати говоря. Django не CMS, а Framework.
K900 28.07.2010 19:45 #
Речь как бы о Django CMS, который есть отдельный продукт на джанге, но не сама джанга. Читайте внимательнее
bosha 28.07.2010 20:04 #
Вы тогда пишите понятнее. Я, конечно, извиняюсь что может быть написал грубо, но уже не раз натыкался на то, что django называют cms. Поэтому след. раз советую писать примерно так: "CMS основанной на Django, под названием Django CMS". Как-то так. Это лишь пример.
K900 28.07.2010 20:12 #
Писал-то как бы не я
bosha 28.07.2010 20:19 #
Что писали не Вы? Анонс Ваш, статья по ссылке тоже.

З.Ы. Статью по ссылке не читал.
K900 28.07.2010 20:20 #
Писал вообще-то Ymilij, а я - не он
bosha 28.07.2010 20:24 #
Пардон. Что-то не заметил.
Ymilij 28.07.2010 21:51 #
Казалось бы старался максимально понятно, просто и наглядно написать, а вот же на.
bosha 28.07.2010 22:03 #
не всё идеально. Возможно, если бы я прочитал пост в надежде найти что-то новое для себя, у меня бы не возникло таких мыслей :)
razum2um 28.07.2010 20:04 #
полезно. даже если мне на поверхностный просмотр все уже кажется элементарным...
для первого раза почитать - супер.
но
вы где mptt нарыли? в pip есть две версии, в портаже ни одной, какая?. это раз.
во вторых, ради интереса, поменяйте базу на mysql, пожалуйста.
У меня возникла проблемка именно с ней (sqlite - ok, но ясно не то, что надо)
исчерпывающее описание тут
Ymilij 28.07.2010 22:55 #
Спасибо.

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 - он создал таблицы, юзера, всё, как положено.

Запустил, проверил, работает.
Ymilij 28.07.2010 22:57 #
Сплю уже, спалил пароль. Кто-нибудь, потрите, пожалуйста.
razum2um 29.07.2010 05:45 #
Что работает?
Модель с деревом создали? Дерево получается?
какая версия MySQLdb?

сделайте, пожалуйста такую, как я выше по ошибке дал, syncdb (оно то отработает...) и покажите show create table *таблица этой модели*
Ymilij 29.07.2010 07:24 #
dev-python/mysql-python-1.2.3_rc1
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;
razum2um 29.07.2010 09:52 #
ну еще три шага... :)
python manage.py shell
>>> from **MODELS** import *YOUR_MODEL*as model
>>> root=model(name='root')
>>> root.save()


ну и версии MySQLdb и
>>> mptt.VERSION
(0, 3, 'pre')
?

то я уже с ума схожу...
razum2um 29.07.2010 10:01 #
пардон, версии не прочел. биндинг тот же. ну из того что у меня mysql5.0 думаю ничего не следует..
но фишка то в том, что с dj-сms или без - mptt не работает..
Ymilij 29.07.2010 15:36 #
При попытке сделать:
>>> 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 не пойму.
razum2um 29.07.2010 16:18 #
AlreadyRegistered

mptt.register(Category, order_insertion_by=<'name'>)
закомментить ее (нужна только перед syncdb, однажды)

Как посмотреть версию mptt

import mptt
mptt.VERSION
Ymilij 02.08.2010 16:28 #
Закоментил 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')

Странные ошибки.
razum2um 02.08.2010 18:45 #
ну приехали. что и требовалось доказать.
апните чтоли вопрос на python.su по ссыле в начале треда...
а то мне никто там не верит.
хз.
Ymilij 02.08.2010 19:00 #
Оставил там подтверждающий комментарий.
razum2um 02.08.2010 18:45 #
и спасибо за терпение.
зато теперь проблема общая ;)
Ymilij 02.08.2010 19:01 #
Пожалуйста. Рад помочь :-)
shybovycha 01.08.2010 14:32 #
Use Rails, Luke!

Рельсы, насколько я их щупал, более моццные, гибкие и удобные, нежели джанга. Да и питоновская идеология меня перестала привлекать давно... Джанга еще слишком молод и недоразвит по сравнению с рубишным решением.
razum2um 02.08.2010 18:46 #
нефанатично
shybovycha 02.08.2010 19:56 #
я и не претендую на фаната ни одного из фреймов ;)