Django: после отправки формы кнопка обзора исчезает - PullRequest
1 голос
/ 14 марта 2020

Я работаю над проектом извлечения данных в формате PDF. Здесь я просматриваю файл PDF, используя поле django -forms, и затем отображаю извлеченные данные на той же странице. Все работает нормально, но проблема заключается в том, что после отправки просматриваемого файла извлеченные данные появляются на та же страница, но кнопка просмотра исчезает.

forms.py

class browse(forms.Form):
    file = forms.FileField()

views.py

def index(request):  
    if request.method == 'POST':  
        user = browse(request.POST, request.FILES)  
        if user.is_valid():  
            handle_uploaded_file(request.FILES['file'])#store file in upload folder
            path = "pdfextractor/static/upload/"+ str(request.FILES['file'])#path of selected file
            result = extract_data(path)#extract data from file
            context = {'result':result}
            return (render(request,'pdfextractor/index.html',context))
    else:  
        user = browse()  
        return render(request,"pdfextractor/index.html",{'form':user})

index. html

<body>  
    <form method="POST" class="post-form" enctype="multipart/form-data">  
            {% csrf_token %}  
            {{ form.as_p }}  

            <input type="Submit" name="submit" value="Submit"/>
    </form>

    {% for key, value in result.items %}
    <h1>{{key}} : {{value}}</h1>
    {% endfor %}
</body>  

output

enter image description here

здесь вы можете увидеть кнопку просмотра исчезнуть. Теперь здесь я хочу эту кнопку обзора, чтобы пользователь мог просматривать новый файл прямо отсюда enter image description here

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Это потому, что ваша форма не включена в ваше заявление if, поэтому она становится None.

def index(request):
    result = None
    form = None
    if request.method == 'POST':  
        form = browse(request.POST, request.FILES)  
        if form.is_valid():  
            handle_uploaded_file(request.FILES['file']) # store file in upload folder
            path = "pdfextractor/static/upload/"+ str(request.FILES['file'])#path of selected file
            result = extract_data(path) # extract data from file
    else:
        form = browse()
    context = {"form": form, "result": result}
    return render(request,'pdfextractor/index.html', context)
1 голос
/ 14 марта 2020

В части запроса POST форма не заполняется через context, тогда как в предложении else она выполняется.

Вы можете создать новую форму и добавить ее в context:

context = {
    'result': result,
    'form': browse(),
}

Но учтите, что в форме шаблона отображается над результатами, поэтому при отображении на экране будет отображаться результат sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...