セッション変数を使用して、ユーザーが請負業者または雇用者としてログインしているかどうかを確認しています
請負業者の場合:
request.session['LoggedAsContractor'] = True
雇用主の場合:
request.session['LoggedAsContractor'] = False
次に、セッション変数を変更するだけの2つのスイッチメソッドtoContractorとtoEmployerを実装しました。
HTMLビューから、切り替えボタンをクリックしても変数は変更されず、他には何も変更されませんが、ページを更新すると、変数が変更され、その他すべてが変更されます。
このエラーは、ローカルホストでプロジェクトを実行している場合は発生しません。プロジェクトがデプロイされている場合にのみ発生します(Gondor)。
これは私が持っているセッションのタイプです:
INSTALLED_APPS = (
'django.contrib.sessions',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
)
アップデート
これは、ボタンスイッチによって呼び出されるtoContractorのメソッドです。
def switchToContractor(request, user_name):
request.session['LoggedAsContractor'] = True
if "employer" in request.GET['next']:
if str(request.user) == user_name:
return redirect('/contractor/' + user_name + '/')
else:
return redirect(request.GET['next'])
else:
return redirect(request.GET['next'])
request.session ['LoggedAsContractor']=Trueとrequest.session['LoggedAsContractor']= Falseの違いは、HTMLでの表示です。
HTMLコード:
{% if request.session.LoggedAsContractor %}
<!-- Show some buttons -->
{% else %}
<!-- Show other buttons -->
{% endif %}
更新2
これは、[切り替え]ボタンを含むHTMLコードです。
{% if request.session.LoggedAsContractor %}
<a href="/contractor/{{request.user}}/switch/?next={{request.path}}">Switch to Employer View</a>
{% else %}
<a href="/employer/{{request.user}}/switch/?next={{request.path}}">Switch to Contractor View</a>
{% endif %}
URL / Contractor / username / switch /は、メソッドswitchToEmployerにリダイレクトします。
URL / employee / username / switch /は、メソッドswitchToContractorにリダイレクトします。