以前書いた記事
「MovableTypeのバックアップ」
にtokibitoさんからコメントを頂き知った
「django-wordpress-admin」
こいつを使って、
今のMovableTypeのブログをDjangoへ
移行しようと考えてみました。
django-wordpress-adminは
GoogleCodeで公開されています。
ここからどうぞ
でdjango-wordpress-adminの中身は、
django-wordpress-admin-read-only/
readme.txt
wordpress/
__init__.py
__init__.pyc
models.py
models.pyc
views.py
内容としては、
models.pyがWordPressのDB構成で書かれている。
実際に試してみた。
とりあえずは、
1. MovableTypeがDBを使っていないため、テキスト形式でバックアップ。
2. WordPressをインストール
3. MovableTypeのバックアップファイルをWordPressのDBへインポート
これすごい!ちゃんとインポートされる。すごく気持ちがいいw
4. WordPressに入れたデータをmysqldumpする。(CREATE文が入っているもの)
5. Djangoでプロジェクトを作成(今回は仮でweblogとする。)
6. アプリケーションを作成(今回は仮でblogとする。)
この後、
django-wordpress-admin-read-only/wordpress/以下をモデルの下へコピーし、
settings.pyでINSTALLED_APPSに「6」で追加したアプリケーションblogを追加。
他にもadminなんかも追加しておくので、
settyngs.pyのINSTALLED_APPSは下記のようになる。
INSTALLED_APPS = (
’django.contrib.auth’,
’django.contrib.contenttypes’,
’django.contrib.sessions’,
’django.contrib.sites’,
’django.contrib.markup’,
’django.contrib.admin’,
’weblog.blog’,
)
それからsyncdbを叩くと、DBがちゃんと作成されない。。。。。
./manage.py sql blog
で確認してもちゃんとCreateTableしているのに。。。
で何が足りないか?
・ テーブル(wp_post2cat)
・ wp_postsテーブルのカラム(comment_status)
・ wp_postsテーブルのカラム(ping_status)
・ wp_postsテーブルのカラム(post_status)
・ wp_postsテーブルのカラム(post_password)
これが足りないorz
なので、
INSTALLED_APPSへはアプリを追加せずに実行する。
7. 「6」で追加したアプリケーションをコメントアウト
INSTALLED_APPS = (
’django.contrib.auth’,
’django.contrib.contenttypes’,
’django.contrib.sessions’,
’django.contrib.sites’,
’django.contrib.markup’,
’django.contrib.admin’,
# ’weblog.blog’,
)
8. 先ほどsyncdbをしたので、一度DBをドロップしてから再作成。
9. mysqldumpをDBへ流し込む。
※ CREATE文が入っているものであれば、models.pyと同期が取れるので。
10. 「7」でコメントアウトしたアプリケーションのコメントアウトを外す。
11. django-wordpress-admin-read-only/readme.txtに書いてある通りにテーブル名を変更する。
ALTER TABLE `blog`.`wp_post2cat` RENAME TO `blog`.`wp_posts_categories`;
ALTER TABLE `blog`.`wp_link2cat` RENAME TO `blog`.`wp_links_categories`;
12. models.pyも11に伴い変更する。
47行目
categories = models.ManyToManyField(Category, db_table=u’%swp_link2cat’ % WP_PREFIX, filter_interface=models.HORIZONTAL)
を下記に変更する。
categories = models.ManyToManyField(Category, db_table=u’%slinks_categories’ % WP_PREFIX, filter_interface=models.HORIZONTAL)
122行目
categories = models.ManyToManyField(Category, db_table=u’%swp_post2cat’ % WP_PREFIX, filter_interface=models.HORIZONTAL)
を下記に変更する。
categories = models.ManyToManyField(Category, db_table=u’%sposts_categories’ % WP_PREFIX, filter_interface=models.HORIZONTAL)
これでadminへログインしてデータを確認する。
ちゃんと管理側でも確認出来た♪
後はviews.pyやテンプレートを作成すればOK.
でもWordPressをそのまま使えばって思うが、
Djangoで作ってみたい!!!ので作成する事に決定w