#python #django #post #file-io
Вопрос:
Я хотел сохранить содержимое загруженного файла .txt (с новыми строками) в переменной, чтобы я мог вызывать другие свои функции в этой переменной. Но я не могу найти способ добиться этого. Я перепробовал все методы, но это не работает
Вот простой пример кода:
Шаблон
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="txt">
<button type="submit" name="encode">Encode</button>
</form>
Вид
from .algorithms.algo import encoder
def encoder(request):
context = {'encoded':''}
if request.method == 'POST':
text = request.FILES['txt'].read()
encoded = encoder(text)
context['encoded'] = encoded
return render(request, 'template.html', context)
Кроме того, когда я попытался вывести файл, он показал мне какой-то странный текст вместо фактического содержимого файла.
Пожалуйста, администраторы, не закрывайте этот вопрос, я обшарил весь Интернет, но не нашел ответа на свой вопрос
Или есть способ получить значение из `textarea` и сохранить его в переменной с новыми строками?
Комментарии:
1. предоставьте свой странный текст здесь
2. @AshrafulIslam b’rnrn48′, но на самом деле это должно быть «nn48 » (только с двумя новыми строками). В любом случае, когда я сохраняю эти данные в переменной и продолжаю выполнять свою функцию(даже с этими странными данными), она возвращает неправильный ответ. Похоже, контент хранится в другом формате. Я вывел его в шаблоне.
Ответ №1:
Попробуй:
text.decode("utf-8")
или
encoded.decode("utf-8")
перед контекстированием значения
Комментарии:
1. Он удалил эти странные тире, но похоже, что он преобразовал все новые строки в пробелы или что-то в этом роде. =(
Ответ №2:
Сначала вам нужно декодировать содержимое, потому что данные, которые вы читаете, выражены в байтах. Вы можете сделать это, изменив:
text = request.FILES['txt'].read()
Для text = request.FILES['txt'].read().decode()
или вы можете расшифровать его после с помощью:
text = text.decode()
Комментарии:
1. Он не сохраняет новые строки, но да, он очищает текст