#python #django #templates #textarea
#python #django #шаблоны #текстовая область
Вопрос:
Я новичок в Django, и в настоящее время я работаю над веб-сайтом, где у меня есть кнопка выбора файла и текстовая область. Я хочу, чтобы, когда я нажимаю на кнопку выбора файла и выбираю файл .txt или .pdf, весь текст из этого файла должен отображаться в текстовой области рядом с ним. вот графический интерфейс, вот внешний вид, но эта вещь не работает. Я перепробовал много решений, но у меня ничего не работает. Я использую python версии 3.8 и Django версии 3.1. models.py
class text_file(models.Model):
txtfile = models.FileField()
text = models.TextField(max_length=10000)
date = models.DateTimeField(auto_now=True) #data saved into db
def __str__(self):
return self.text_file
вот мой fileactions.py досье. Это модельная форма.
from PyPDF2 import pdf, PdfFileReader
from django import forms
from .models import text_file
class filetext(forms.ModelForm):
text_file = forms.FileField(required=True, widget=forms.Textarea(
attrs={
'class': 'form-control',
'placeholder': 'text_file...',
'id': 'input1'
}
))
class Meta:
model = text_file #import text_file model from home models.py
fields = {'text_file'}
def save(self, commit=True):
filename = input('file')
textfile = open(filename, 'rb')
pdf_reader = pdf.PdfFileReader(textfile)
page_numbers = pdf_reader.getNumPages()
title = pdf_reader.documentInfo.title
print("the document title is: ", title)
print("there are total: ", page_numbers, "pages")
count = 0
text = ''
while count < page_numbers:
page = pdf_reader.getPage(count)
text = page.extractText()
return self.text
return super().save(commit)
home.html
<div id="intro">
<div class="container">
<div class="row">
<div class="col-md-4">
<form method="POST" enctype="multipart/form-data", id='textForm' method="post"/>
{% csrf_token %}
{{ form.as_p }}
</form>
</div>
<div class="col-md-4">
</div>
<input type="file" class="btn btn-primary" Text="choose file" id="file"><br>
</div>
</div>
</div>
view.py
def post_text(request):
if request.method == "POST":
form = filetext(request.POST)
if form.is_valid():
text = form.cleaned_data.get('text_file')
return render(request=request,
template_name="main/home.html.html",
context={"form": form})
form = filetext
return render(request=request,
template_name="main/home.html",
context={"form": form})
urls.py
urlpatterns = [
path("filetext", views.post_text, name="homepage"),
]
пожалуйста, помогите мне либо с вашими предложениями по этому коду, либо с вашим собственным примером кода. (если кто-то делает то же самое)
Комментарии:
1. Если вы просто хотите отобразить содержимое файла в текстовом поле — есть гораздо более простой способ сделать это с помощью JavsScript / jQuery. Просто откройте файл, и как только пользователь выберет его, используйте некоторую библиотеку JS для анализа и чтения файла. Затем вы можете впоследствии применить прочитанное содержимое к текстовому полю.
2. на самом деле, я намерен выполнить другие операции с этим файлом. Это все о NLP с использованием python. Этот файл загружается другими пользователями, которые заходят на этот сайт, а не мной. Я хочу извлечь текст этого файла, отобразить его текст в текстовой области, а затем выполнить операции NLP над текстом.
3. Какова ваша точная ошибка? Можете ли вы дать хотя бы трассировку ошибок, чтобы я мог разобраться в этом?
4. ошибки нет. когда я нажимаю на кнопку выбора файла, мне предлагается выбрать файл, когда я выбираю файл, его имя отображается на кнопке, заменяя текст «файл не выбран». но после этого ничего не происходит. его текст не отображался в текстовой области.
5. AzyCrw4282 пожалуйста, помогите мне своими знаниями. Я делаю свой семестровый проект, и мне нужно решить эту проблему как можно скорее.