私は、request.sessionのpostメソッドからいくつかのフォーム値をリストフィルタとして保存して、別のビュー関数でレンダリングしますフィルタリングされた結果。問題は、ログインしたユーザーが結果を保存したままにしている場合です。結果ページに直接アクセスすると、他のユーザーが結果をフィルタリングすることになります。セッションを使用してフォーム入力値を保存し、別のビューで表示する
私はページングを使用しています(AJAXなしのdigg)、私はdjango-el-paginationを使用しています。
views.py
def search(request):
if request.method == 'POST':
form = ComprarBuscaForm(request.POST)
if form.is_valid():
cidade = form.cleaned_data['cidade']
request.session['cidade'] = form.cleaned_data['cidade']
request.session['quartos'] = form.cleaned_data['quartos']
request.session['tipo_imovel'] = form.cleaned_data['tipo_imovel']
request.session['preco_minimo'] = form.cleaned_data['preco_minimo']
request.session['preco_maximo'] = form.cleaned_data['preco_maximo']
request.session['area_minima'] = form.cleaned_data['area_minima']
request.session['area_maxima'] = form.cleaned_data['area_maxima']
return HttpResponseRedirect(reverse('imoveis:resultado_busca'))
else:
form = ComprarBuscaForm()
return render (request, 'imoveis/busca_comprar.html', {'form':form})
def search_result(request):
anuncios = Anuncio.objects.filter(quartos=request.session['quartos'],
cidade=request.session['cidade'],
tipo_imovel=request.session['tipo_imovel'],
preco_venda__gte=request.session['preco_minimo'],
preco_venda__lte=request.session['preco_maximo'],
area_construida__gte=request.session['area_minima'],
area_construida__lte=request.session['area_maxima'],
tipo_anuncio='Venda')
return render(request, 'imoveis/resultado_busca_comprar.html', {'anuncios': anuncios})
すべては私が前に述べた事実が正常に動作しています。私がやっていることがこの種の状況に適切なアプローチであるかどうかは疑問です。
あなたの言っていることは明確ではありません。セッションはユーザー固有のものであり、検索結果ページに行くとそのユーザーのセッションに格納されているクエリ結果のみが表示されます。 –
@DanielRoseman、それは私がコードを書いた時です。しかし、私はなぜそれが起こっているのか分からない、これは私の質問の中核です。 –
@DanielRoseman、もう一度テストをしました。私のログインシステムは、同じ電子メールでアカウントをマージしていました。私のテストでは、ユーザー名と私のgmailアカウントを使用していました。コードが動作しています。今、私は結果のページにエラーのaccourを処理しようとすると、要求されたセッション変数が格納されていないので、 –