Не понимая Django форм и их использования, есть ли способ игнорировать их и при этом сохранять файлы, загруженные в формы? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать веб-сайт, используя django, с которым я не знаком. Не знаю, в каких формах django я написал свой файл html исключительно в html, и теперь мне трудно сохранить загруженные файлы, потому что django не позволяет мне сохранять их вручную. Я безуспешно пытался обойти это, поэтому я думаю, что теперь мне нужно переписать свой файл html в шаблон django html, чтобы я мог сохранять файлы. У меня есть файл html вроде этого:

html

<div class="w3-container w3-white">
      <select class="w3-select" name="request_function" id="request_function" >
                 <option id="faces_embedding" value="faces_embedding" style="" onclick="pagechange()">faces_embedding</option>
                <!-- <option id="faces_model" value="faces_model" style="" onclick="pagechange()"> faces_model </option> -->
                 <option id="image_recognizer"value="image_recognizer" style="" onclick="pagechange()">image_recognizer</option>
                 <option id="video_recognizer" value="video_recognizer" style="" onclick="pagechange()">video_recognizer</option>
                 <option id="stream_recognition" value="stream_recognition" style="" onclick="pagechange()">stream_recognizer</option>
                 <option id="help" value="help" style="" onclick="pagechange()">help</option>
      </select>
    </div>

<div id="AddFaces" style="visibility: visible; display: block;">
      <div class="w3-row-padding" style="margin:0 -16px;" >

            <div class="w3-half">
              <input type="radio" name="input_method" id="input_method_0" onclick="datachange()" checked value="input_method_0">
              <label>Add A Database</label>
            </div>
            <div class="w3-half">
              <input type="radio" name="input_method" id=input_method_1" onclick="datachange()" value="input_method_1">
              <label>Add A Face</label>
            </div>
          </div>

          <div class="w3-row-padding" style="margin:0px -10px;">
            <div id="dataset" class="w3-half w3-margin-bottom" style="visibility: visible; display: block;">
              <label>Dataset Path</label>
              <input class="w3-input w3-border" type="text" placeholder="directory path" name="dataset_path" id="dataset_path" required >
            </div>

            <div id="face" style="visibility: hidden; display: none;">
            <div  class="w3-half w3-margin-bottom">
              <label>Images Path</label>
              <input type="file" id="face_files" name="face_files" multiple >
            </div>

            <div class="w3-half">
              <label>Name</label>
            <input class="w3-input w3-border" type="text" placeholder="person name" name="face_name" id="face_name" >
            </div>
            </div>
          </div>
      </div>

где «datachange ()» - это функция javascript, которая скрывает различные погружения, которые мне не нужны и мой view.py

    if request.method == "GET":
        return render(request, 'index.html')
    if request.method == "POST":
        form = InputForm(request)
        call_form_function(form)
        return render(request, 'index.html')

, где «InputForm.py» - это обычный python класс, который принимает теги идентификаторов форм и использует их в качестве входных данных для функций.

   def __init__(self, request):
        self.request_function = request.POST.get("request_function")

        self.input_method = request.POST.get('input_method')

        self.dataset_path = request.POST.get('dataset_path')

        self.face_files = request.FILES.getlist['face_files']

        self.face_name = request.POST.get('face_name')

из django документы , я использовал эту функцию:

def handle_uploaded_file(f):
    with open('some/file/name.txt', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

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

ВОПРОС : Итак, мой вопрос в том, что я должен использовать django from для сохранения файлов загрузки? Есть ли способ обойти это? и если нет возможности сделать это, как я могу изменить свой файл html таким образом, чтобы он по-прежнему выглядел так же на веб-странице, а мои сценарии javascript работают с шаблонами django. ps: у меня также нет базы данных models.py, поскольку они мне не нужны.

1 Ответ

1 голос
/ 09 июля 2020

Что ж, если вы не используете формы и не используете базу данных, почему вы используете Django :) Как и все современные веб-фреймворки, которые используют MVC (Mode, View, Controller) или Django случай MTV (Модель, Шаблон, Представление) рано или поздно вам понадобятся все три из них. логики программирования c живет.

Если в шаблоне есть формы, вам нужно будет определить форму в Django. На самом деле это значительно упрощает жизнь, и это может быть очень простым определением, если вы используете модели. А информация о ваших файлах (метаданные), которую кто-то может загрузить, должна храниться в модели (базе данных). Это значительно упростит вам работу с файлами.

Но, в конце концов, это действительно зависит от того, что делает ваше приложение?

...