32

Djangoで記述されたWebアプリケーションがあり、モバイルバージョンのテンプレート(およびわずかに異なるロジック)を実装したい特定のページが1つあります。このsudoコードで実装できるようにしたいと思います。

def(myView)

  do some stuff

  if user-is-on-a-mobile-device:
     do some stuff
     return (my mobile template)

  else:
     do some stuff
     return (my normal template)

私にはそれほど時間はなく、コーディングの学習曲線のかなり早い段階です:)-モバイルデバイスの機能を取得するためのbloomと呼ばれる非常に強力なプラグイン可能なアプリのように見えるものを見つけました-http ://code。 google.com/p/django-bloom/wiki/BloomDevice しかし、JSONを介して、必要のない多くのデバイス仕様を取得するように要求しているようです。これは、私には少し非効率的です。

誰かがもっと簡単な方法を提案していますか?私の検出は100%である必要はなく、iPhone、iPod、Android、および主流のデバイスだけです...

http_user_agent文字列には、確認できるモバイルフラグがありますか?

4

3 に答える 3

20

アップデート:

見つけたばかり:http ://code.google.com/p/minidetector/

これは私が望んでいることを正確に実行しているようです。これからテストします。私が間違っていると私に言ってください!

于 2010-02-23T19:50:17.293 に答える
15

ベストプラクティス:minidetectorを使用してリクエストに追加情報を追加し、次にdjangoの組み込みのリクエストコンテキストを使用して、そのようにテンプレートに渡します。

from django.shortcuts import render_to_response
from django.template import RequestContext

def my_view_on_mobile_and_desktop(request)
    .....
    render_to_response('regular_template.html', 
                       {'my vars to template':vars}, 
                       context_instance=RequestContext(request))

次に、テンプレートで次のようなものを導入できます。

<html>
  <head>
  {% block head %}
    <title>blah</title>
  {% if request.mobile %}
    <link rel="stylesheet" href="{{ MEDIA_URL }}/styles/base-mobile.css">
  {% else %}
    <link rel="stylesheet" href="{{ MEDIA_URL }}/styles/base-desktop.css">
  {% endif %}
  </head>
  <body>
    <div id="navigation">
      {% include "_navigation.html" %}
    </div>
    {% if not request.mobile %}
    <div id="sidebar">
      <p> sidebar content not fit for mobile </p>
    </div>
    {% endif %>
    <div id="content">
      <article>
        {% if not request.mobile %}
        <aside>
          <p> aside content </p>
        </aside>
        {% endif %}
        <p> article content </p>
      </aricle>
    </div>
  </body>
</html>
于 2010-11-11T07:48:12.570 に答える
8

django-mobiと呼ばれるminidetecorのフォークを探してください。これには、使用方法に関するドキュメントが含まれています。

https://pypi.python.org/pypi/django-mobi

于 2013-03-19T14:50:05.317 に答える