Загрузите файл и затем отобразите содержимое, django - PullRequest
1 голос
/ 23 мая 2019

Я предвосхищу это, отметив, что я новичок в питоне.

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

Я пытаюсь использовать FileSystemStorage (), но я не могу правильно его настроить.

Вот так выглядит мой views.py и шаблон.

# views.py

from django.core.files.storage import FileSystemStorage
from django.views.decorators.clickjacking import xframe_options_exempt
from icalendar import Calendar, Event
from pytz import UTC


@xframe_options_exempt
def index(request):
    if request.method == 'POST' and request.FILES['icsfile']:
        myfile = request.FILES['icsfile']
        fs = FileSystemStorage()
        filename = fs.save(icsfile.name, icsfile)
        uploaded_file_url = fs.url(filename)
        g = open(uploaded_file_url, 'rb')
        gcal = Calendar.from_ical(g.read())
        for component in gcal.walk():
            if component.name == "VEVENT":
                summary = component.get('summary')
                description = component.get('description')
                start_time = component.get('dtstart')
                end_time = component.get('dtend')
        g.close()

        return render(request, 'ics_parser/index.html', {
            'uploaded_file_url': uploaded_file_url,
            'summary': summary,
            'description': description,
            'dtstart': dtstart,
            'dtend': dtend,
        })
    return render(request, 'ics_parser/index.html', {})


# index.html

 <div class="ics-formatter"></div>
    <div class="row">
        <div class="col-sm-6">
            <form method="post" enctype="multipart/form-data">
                {% csrf_token %}
                <input type="file" name="icsfile">
                <button type="submit">Upload</button>
            </form>
        </div>
        <div class="col-sm-6">
            {% if uploaded_file_url %}
            <p>{{description}}</p>
            {% endif %}
        </div>
    </div>


Это ошибка, которую я получаю:

Тип исключения: NameError Значение исключения:
имя 'icsfile' не определено

1 Ответ

0 голосов
/ 23 мая 2019

Вы определили файл как myfile

Попробуйте заменить

filename = fs.save(icsfile.name, icsfile)

С

filename = fs.save(myfile.name, icsfile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...