1

Google でしばらく検索しましたが、探しているものを正確に見つけることができませんでした。ここで皆さんに質問することにしました。

サイトの完全版とモバイル版 (1 ページの jQuery Mobile ファイル) があります。

理論的には、可能なモバイル デバイスの着信要求をチェックし (既にこれを実行できます)、モバイル サイトにリダイレクトしたいと考えています。モバイル サイトでは、ユーザーは Cookie を設定する完全なサイトへのリンクをクリックすることができ、そのユーザーをモバイル サイトにリダイレクトすることはありません (デバイスでのすべての要求でその条件が満たされるとしても)。

私が見つけたのは、モバイル/デスクトップ デバイスのすべてのリクエストを確認し、それに応じてテンプレートを変更する方法についてです。これは、この状況で私がする必要があることではありません。これは、モバイル版とデスクトップ版でまったく異なるテンプレートです。

この状況で役立つアイデアや解決策はありますか?

更新 1:

だから私はこれを実装しようとしましたが、奇妙な問題/問題が発生しています。これが私のミドルウェアです(設定のミドルウェアリストの最後にリストされています)

class mobile_check(object):

def process_request(self,request):
    if mobileBrowser(request) and not request.session.get('view_full'):
        return HttpResponseRedirect(reverse('posts.views.mobile_django'))

jQuery Mobile で完全なサイト リンクをクリックしたときに処理するビューを次に示します。

def mobile_fullsite(request):
#import pdb; pdb.set_trace()

request.session['view_full'] = True
return HttpResponseRedirect(reverse('posts.views.index'))

私の頭では、これはうまくいくはずですが、そうではありません。リンクから mobile_fullsite ビューにヒットし、URL が .../mobile/ から .../fullsite/ に変更されますが、リダイレクトされたページからのものを含む jQuery モバイルのように見えます。

何か案は?

4

2 に答える 2

1

django-mobileあなたが探している多くの機能を備えています。それらはいくつかの異なる部分に実装されています。最初のものは、モバイル ユーザー エージェントを検出します。2 つ目は、それに対応するテンプレート (フル サイトまたはモバイル サイト) をレンダリングします。さらに、ユーザーは (GET を使用して) 要求を表示するバージョンを選択できます。 https://github.com/gregmuellegger/django-mobile

必要なものがすべて揃っていなくても、幅広いファンがいますので、チェックしてみてください。コードを提供できると確信しています。

ユース ケースが少し異なる場合は、django のセッション フレームワーク (https://docs.djangoproject.com/en/dev/topics/http/sessions/) を簡単に使用して、それに応じてユーザーに指示を与えることができます。

# user asks to view full site
request.session['view_full'] = True

次に、モバイルユーザーエージェントをチェックするときにミドルウェアで、以下の擬似

if is_mobile and not request.session.get('view_full'):
  # they have mobile device and haven't request to see full site!~
  # Just check that they don't have a preference for viewing full site^
于 2012-05-30T16:20:12.447 に答える
0

テンプレートを変更するだけでなく、完全なリダイレクトが必要な場合があります。django.http.HttpResponseRedirectを見てください

from django.http import HttpResponseRedirect

# test for mobile device here
# test for full site session variable here
fullSiteRequest = request.session.get('User_Wants_Full_Site', False)

if mobileDevice and not fullSiteRequest:
    return HttpReponseRedirect('mobile.mysite.com')

# continue onto your regular site

ed。以下の私のコメントを反映するため。

于 2012-05-30T16:10:10.187 に答える