使用session来存储表单输入值,以便在另一个视图中使用

时间:2016-11-22 13:02:46

标签: django django-forms django-views

我正在从request.session中的post方法存储一些表单值,这是一个列表过滤器,以便在另一个视图函数中使用它来呈现过滤结果。问题是我登录的任何用户都会保存结果,如果他们直接访问结果页面,他们会看到其他用户过滤结果。

我使用分页(没有AJAX的digg),我正在使用django-el-pagination。

views.py

 newRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
               Person person = dataSnapshot.getValue(Person.class);
 String string = "Username: "+person.getName()+"\nEmail: "+person.getEmail()+"\n\n";

            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

尽管我之前提到的事实,但一切都运转良好。我想知道我在做什么是这种情况的正确方法。

1 个答案:

答案 0 :(得分:0)

是否真的有必要为此使用两个视图?如果我是你,我会在同一个表格视图中过滤和渲染。

def search(request):
    if request.method == 'POST':
        form = ComprarBuscaForm(request.POST)
        if form.is_valid():
            anuncios = Anuncio.objects.filter(quartos=request.session['quartos'],
                                   cidade=request.session['cidade'],
                                   tipo_imovel=form.cleaned_data['tipo_imovel'],
                                   preco_venda__gte=form.cleaned_data['preco_minimo'],
                                   preco_venda__lte=form.cleaned_data['preco_maximo'],
                                   area_construida__gte=form.cleaned_data['area_minima'],
                                   area_construida__lte=form.cleaned_data['area_maxima'],
                                   tipo_anuncio='Venda')
            return render(request, 'imoveis/resultado_busca_comprar.html', {'anuncios': anuncios})

    else:
        form = ComprarBuscaForm()
    return render (request, 'imoveis/busca_comprar.html', {'form':form})