читать загруженный текстовый файл в текстовый виджет (формы django) - PullRequest
0 голосов
/ 02 октября 2018

У меня есть файл загрузки, который принимает текстовый файл и читает входные данные (contentOfFile).

Загрузка файла и чтение данных работает нормально (я проверял это), но у меня возникают проблемы при попытке заполнить мой виджет текстовой области этими данными.

просмотров.py

 uploaded1 = request.FILES['uploaded']
 contentOfFile = uploaded1.read()
 textInput1.innerHTML = contentOfFile

forms.py

class HomeForm(forms.Form):
    textInput1 = forms.CharField(required=False, widget=forms.Textarea(
        attrs={
            'class': 'form-control',


        }

    ))

    class Meta:
        fields = {'textInput1',} 

template.html

<form method="post" enctype="multipart/form-data">
                {% csrf_token %}
                {{ form.textInput1 }}
                <button type="submit" name="compare" class="btn btn-primary mb-2">Compare</button>

            </form>

1 Ответ

0 голосов
/ 03 октября 2018

Потребовалось некоторое время, но это удалось выяснить.

Текстовый виджет form.textInput1 и 'uploaded1' относится к вводу файла в шаблонах.Мне пришлось добавить цикл for, чтобы текстовая область не отображала '/ b' перед загруженным текстом.Я думаю, что это связано с преобразованием типов из двоичного кода, поэтому цикл for преобразует это вручную в строку

Надеюсь, это поможет кому-то в будущем.

views.py:

form = HomeForm(initial=dict(foo=request.FILES))
if 'uploaded1' in request.FILES:
    upload1 = request.FILES['uploaded1'].read()
    data1 = ""
    for x in upload1:
        data1 = data1 + chr(x)
    form.initial['textInput1'] = data1
    args = {'uploaded1': upload1, 'form': form, }
    if upload1:
        return render(request, self.template_name, args)

template.html

<form method="post" enctype="multipart/form-data">
                {% csrf_token %}
                {{ form.textInput1 }}
                <input type="file" name="uploaded1" accept=".txt"/>
                <input type="submit" value="upload sample text"  class="btn btn-primary mb-2"/>
</form>
...