2016-05-07 6 views
2

をアプリの正しい流れに従うユーザーは、それは2つの基本的な機能を持っていないかどうかを検出:私はアプリを構築していますジャンゴで

1)ユーザーは、コードや彼を続けるために聞かせて、ピンを入力する必要があります。 URL:/ enter-your-code 2)アクティビティのビュー(このビューを実行するもの)。 URL:/ anything

ユーザーは常にコードを入力する必要がありますが、ユーザーがコードのビューにパスしないで2番目のURLに直接行く場合はどうなりますか?ユーザーがPINを入力しなかった場合、どうすれば検出できますか?

+0

一言:

あなたはいつもの例のためのモデルを作ることができます。セッション。 – e4c5

答えて

2

すべてのビューのrequestオブジェクトには、状態を保存できるsessionプロパティがあります。

def myview(request): 
    if request.session['has_pin']: 
     # show your "/anything" content 
    else: 
     return HttpResponseRedirect('/enter-your-code') 


def my_enter_code(request): 
    if request.method == 'POST': 
     if check_pin(request.POST.get('pin', None) 
      request.session['has_pin'] = True 
      return HttpResponseRedirect('/anything') 

    return render('input-pin-form.html') 
2

このコードはユーザーセッションで永続的な状態を維持しますか?

class Code(model.Model): 
    user = models.ForeignKey(User, null=True, blank=True) 
    session = models.CharField() 
    code = models.CharField() 

##### 
Views 
##### 

def enter_code(request): 
    # some_code to handle the code entered by the user 
    code = Code.objects.create(user=request.user, session=request.session.session_key, code=some_code) 


def anything_url(request): 
    session = request.session.session_key 
    try: 
     c = Code.objects.get(session=session) 
     # Let user stay on this page 
    except Code.DoesNotExist: 
     # Here return user to first view 
関連する問題