如何在不同的Django视图中访问用户输入(POST)

时间:2014-08-06 17:36:59

标签: python django forms input

我有一个名为“search”的视图,它将POST输入存储为“search_id”,但“search_id”仅在视图“search”的范围内可用。我希望能够在我的视图“dispTable”中访问变量“search_id”。

免责声明 - 如果我的问题的这部分没有意义,请忽略:我理解我可以向dispTable添加一个额外的参数,这将允许我在return语句中将search_id传递给dispTable但是如果我想成为能够在多个视图中访问search_id。

def search(request):
    if request.method == 'POST' :
        search_id = request.POST.get('textfield', None)            
        try:
            return dispTable(request)                
        except Person.DoesNotExist:
            return HttpResponse("no such user")                
        except Person.MultipleObjectsReturned :
            #return dispTable(request, search_id)
            return showResults(request)                
    else :
         return render(request, 'People/search.html')

def dispTable(request) :
    table = authTable(Person.objects.filter(MAIN_AUTHOR = 'search_id'))
    RequestConfig(request).configure(table)
    #return render(request, 'People/tableTemp.html', {'table':table}) 
    return render(request, 'People/tableTemp.html', {"table" : Person.objects.filter(MAIN_AUTHOR = search_id)})  

我也尝试过使用表单,但我仍然不知道如何在其他视图中访问输入变量,例如dispTable

from django import forms

class SearchForm(forms.Form) :
    search_id = forms.CharField(max_length=100)
    def process(self) :
        search_id = self.cleaned_data['search_id']

def search(request) :
    if request.method == 'POST' :
        form = SearchForm(request.POST)
        if form.is_valid() :
            form.process()                
        return dispTable(request)
    else :
        form = SearchForm()
    return render (request, 'People/search.html')

这是我的html文件:

<form method="POST" action="send/">
    {% csrf_token %}
    <input type="text" name="textfield">
    <button type="submit">Upload text</button>
</form>

0 个答案:

没有答案