Request.POST.get не получил входное значение

Итак, я пытался сделать так: пользователь вводит изображение в кодировке base64, а затем преобразует его в текст с помощью pytesseract OCR. Проблема в том, что каждый раз, когда я пытаюсь ввести изображение, происходит только перезагрузка страницы и ничего не происходит.

Вот мой html сниппет :

<form method="POST" action="{% url 'ocr-view'%}"> {% csrf_token %}
        <label for="base64"> Input Base64 :</label>
        <input type="text" class="form-control" id="text" name="base64" />
        <button type="submit" class="btn btn-primary mt-3" name="submit">
        <i class="fas fa-search"></i>
           Submit
        </button>
</form>


<div class="card-body">
     <label> Result : </label> <br>
     <span class="h3">{{text}}</span>
</div>

Вот мой views.py :

class IndexView(LoginRequiredMixin, CreateView):
model = Ocr
template_name = "ocr/ocr.html"
fields = ['input']


def get_context_data (self):
    text = ""
    
    if self.request.method == 'POST':
        imgstring = self.request.POST.get('base64')
        imgstring = imgstring.split('base64,')[-1].strip()
        image_string = BytesIO(base64.b64decode(imgstring))
        image = Image.open(image_string)

        text = pytesseract.image_to_string(image)
        text = text.encode("ascii", "ignore")
        text = text.decode()

    context = {
        'text': text,
    }
    return context

Но если я помещаю код base64 непосредственно в views.py, функция OCR работает отлично.

imgstring = 'data:image/jpeg;base64,/9j/somerandomcode'
imgstring = imgstring.split('base64,')[-1].strip()
image_string = BytesIO(base64.b64decode(imgstring))
image = Image.open(image_string)

text = pytesseract.image_to_string(image)
text = text.encode("ascii", "ignore")
text = text.decode()

context = {
    'text': text,
}
return context

Я предполагаю, что что-то не так с моим методом отправки сообщения, пожалуйста, просмотрите мой код, есть ли что-нибудь неправильное

Я не думаю, что get_context_data() является правильным методом для использования POST данных, потому что я не думаю, что этот метод вызывается в POST запросах (метод используется только в GET запросах).

Пробовали ли вы другой метод CreateView?

Я предлагаю вам попробовать метод form_valid(); вот другая часть документации с некоторыми примерами https://docs.djangoproject.com/en/3.2/topics/class-based-views/generic-editing/#model-forms

Вернуться на верх