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

2024-09-29 19:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

免责声明-如果我的问题的这部分没有意义,请忽略:我知道我可以添加一个额外的参数到dispTable,这将允许我通过返回语句将search\u id传递到dispTable,但如果我想能够访问多个视图中的search\u 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>

Tags: form视图idsearchreturnifrequestdef

热门问题