スポンサーサイト

0

    一定期間更新がないため広告を表示しています


    • 2014.12.23 Tuesday
    • -
    • -
    • -
    • -
    • -
    • by スポンサードリンク

    djangoで携帯サイト。(UTF8以外のエンコードでサイト公開)

    0
      クライアントさんから、PC・携帯両方対応を希望されることが多くなってきたので、djangoで携帯サイトを作るテストをしてみました。

      ■前提条件■
      python2.4以上(codec標準装備)であること
      PCサイトは既にUTF8環境で作成済みであること(DB内の日本語データもutf8で入っている)

      ■方法論■
      1.新しくmobile_settings.pyを作り、そこに↓を追加。場所はどこでも良い。
      DEFAULT_CHARSET = 'sjis'

      2.mod_pythonなりCGIなりに渡すdjango_settings_moduleは「myproject.settings」ではなく「myproject.mobile_settings」にする。

      3.テンプレート内の日本語はSJISで書く。

      4.DBから読み出した日本語文字列をテンプレート内で呼び出す時にUTF8→SJISエンコード変換をするフィルタを書く。


      # coding: utf8
      from django import template
      register = template.Library()
      @register.filter()
      def sjis(value):
      return unicode(value,'utf8').encode('sjis')


      ※当方、pythonまだまだ素人レベルなので、間違い・無駄処理があったらご指摘くださいm(_ _)m

      5.{% load hoge %}した上で、テンプレート内のDB読み出し部分は{{ object.body }}ではなく{{ object.body|sjis }}のように記述。

      これでSJISエンコードのサイトが公開できました^^
      携帯からも確認済みです★


      スポンサーサイト

      0

        • 2014.12.23 Tuesday
        • -
        • 00:29
        • -
        • -
        • -
        • -
        • by スポンサードリンク

        コメント
        最近気になっていた部分なのでとても参考になりました。

        時間見つけて試してみたいと思います。
        • nobu
        • 2007/06/21 12:38 AM
        nobuさん

        コメントありがとうございます^^
        こちらもnobuさんの「TODOリスト」参考にさせていただいてますm(_ _)m
        今後ともよろしくです〜
        • ★もも★
        • 2007/06/22 2:46 PM
        發糯任覆匹諒源も正しく表示されるか確認されましたか?
        • atj
        • 2007/07/18 6:27 PM
        atjさん

        コメントありがとうございます。
        どうなんでしょうね??私が円コード変換部分を自分で書いたわけではなく、pythonに標準で含まれているコーデックの変換機能を使っているだけですし、現在私が抱えているクライアントさんからの依頼であれば携帯サイトの用途は限られている(人名・地名を使う可能性がない)ため、外字・人名漢字等JIS外文字に関しては気にしていませんでした。(私自身が使わないつもりなので、特にテストもしてません)

        もしatjさんがお試しになって、正しく変換されていないようであれば、pythonのコーデックモジュール自体の問題ですので、pythonのコーデック修正に貢献されてはいかがでしょうか?
        私は、C言語などとっくの昔に忘れてしまったPGの中ではエンドユーザ側の人間と自負しており、Python自体の拡張に関わるつもりはありませんので…。

        なお、django側の状況が変わったので<a href="http://php-sql-gdgd.jugem.jp/?eid=48">新エントリー</a>を上げています。
        といっても、私の自作フィルタと同じくpythonの日本語コーデックモジュールを使っているだけでしょうから、私のフィルタで出来ていないことはdjangoのUnicodeブランチにもできていないと思われますが。
        • ★もも★
        • 2007/07/25 12:27 PM
        はしご高などの問題はpythonのモジュールじゃなくて、UTF-8の問題ですよ。
        http://www.asahi-net.or.jp/~ax2s-kmtn/ref/mdc.html
        • atj
        • 2007/07/26 12:38 AM
        atjさん

        だとしたら、ますます私のブログに書いていただいても困りますねぇ(爆)
        先のコメントでも書いたとおり、私はpython自体や文字コード自体の仕組みを改善しようという点では全く貢献できるスキルも、興味も無いですから。
        私が関心を持っているのは「PC・携帯両用サイト作成の依頼を受けた場合に、正常に携帯で表示できるかどうか?」という点だけなので、姓名判断サイトの依頼でも来たらゆっくり時間を取って調査したり研究したりするかもしれません。が、当面予定はないので現時点ではそんなことどーーーでもいいんです(笑
        UTF-8の漢字について、そんなに大きな問題なのであれば、そのうち誰かが直してくれるんじゃないですか?
        何なら、お暇ならatjさんが直してくれればいいじゃないですか。私は1年でも2年でも気長に待ってますから(爆

        最初から携帯サイトだけ公開する予定ならDB・model・viewごとUTF-8以外の文字コードで組んでしまうという選択肢もありますよね。(携帯でSJISに拘らなくても良いと書いてあるブログもありましたが、私のクライアントさんが持っている携帯は古いので、SJISじゃないと表示できませんww)
        今回は偶々UTF-8で作ってしまったPCサイトがあって、それをもとに携帯サイトを作りたいという場面に際して考えたことをメモしただけですから、状況が違う方(どうしてもご指摘の漢字を使わなければならないとか、人名・地名を多く扱うとか)はそれぞれご自身の状況に応じてオリジナルの解決策を考えればいいんじゃないですか?私は先生でも宣教師でも何でもない単なる一ユーザですから。
        • ★もも★
        • 2007/07/26 10:41 AM
        何を早とちりしているのか分かりませんが、よくあなた自身の記事と私のコメントを落ち着いて読み直してください。

        >これでSJISエンコードのサイトが公開できました^^
        >携帯からも確認済みです★

        と言われてたので、漢字コードの問題も確認したのか聞いただけですよ?
        あなたに解決方法など一言も聞いていません。

        返ってきたレスにも間違いが含まれていたため、それも指摘しただけです。

        もしそういったことを指摘されるのが不愉快だということであれば、
        >※当方、pythonまだまだ素人レベルなので、間違い・無駄処理があったらご指摘くださいm(_ _)m

        このようなことは紛らわしいので初めから書かないで下さいね。
        もしくはpythonのこと以外は気づいても指摘するなと書いておいて下さい。

        • atj
        • 2007/07/26 7:22 PM
        コメントする








           
        この記事のトラックバックURL
        トラックバック

        PR

        calendar

        S M T W T F S
             12
        3456789
        10111213141516
        17181920212223
        24252627282930
        << September 2017 >>

        twitter

        selected entries

        categories

        archives

        recent comment

        • 結局CodeIgniter用汎用Modelクラス&汎用CRUDスクリプトを書きました
          プログラマー
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          ななうぇぶ
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • WindowsのPCで開発するphperがxhprofを使う方法
          ななうぇぶ
        • WindowsのPCで開発するphperがxhprofを使う方法
          川本
        • [バッドノウハウ]Symfony2で別テーブルの集計項目を一覧に含めたいとき
          よし
        • Symfony Advent Calendar JP 2012 day 14 - vendorをcomposerで管理しているプロジェクトにcomposerを使わずにバンドルを追加したときのautoloadの書き方
          77web
        • Symfony Advent Calendar JP 2012 day 14 - vendorをcomposerで管理しているプロジェクトにcomposerを使わずにバンドルを追加したときのautoloadの書き方
          ktz

        recent trackback

        • HTMLの表(TABLE)のセル(TD)に斜線を引くjavascriptライブラリ slash.js 作っちゃいました
          常山日記
        • django対symfony 日本語メール送信(その1 symfony編)
          CPA-LABテクニカル
        • CodeIgniterでユーザー認証
          されどLAMPな日々
        • 久々にdjangoを最新版にしたらHTMLがエスケープされちゃった!!(解決済み)
          常山日記
        • FastCGIを諦めてmod_pythonを使う。Apacheのアップグレード
          サーバー用語集
        • さくらインターネット、sqlite3でdjango@CGI版を使う際の設定メモ
          常山日記
        • さくらインターネット スタンダードプランでdjango使ってる方、DBは?
          mitszoの日記
        • python多次元リストをsort(並べ替え)する方法?
          mitszoの日記
        • フォームから送信した値とrequest.POSTの挙動($_POST@PHPとの比較)
          Humming Via Kitchen
        • 日本語テキストをtruncate@django(Python全般にも??)
          常山日記

        recommend

        links

        profile

        search this site.

        others

        mobile

        qrcode

        powered

        無料ブログ作成サービス JUGEM