Как вставить данные из html-формы в базу данных MySQL с помощью python django

Я создал html форму в файле add_appointment.html и создал базу данных "hospital", таблицу "appointment" в MySQL. Я могу просматривать значения, которые я вставил в мою базу данных на другой html странице под названием view_appointment.html, но я не знаю, как взять ввод html формы из файла "add_appointment.html" и вставить его в базу данных MySQL. Я искал решение везде, но я не вижу людей, делающих это в python Django, только php везде и python, но с flask, если вы можете помочь с какой-нибудь ссылкой, я буду благодарен.
. (Я начинающий, учусь в колледже, делаю проект в первый раз. До сих пор я как-то разбирался, но здесь застрял. Мой проект почти закончен, за исключением одной вещи, я обещаю, что если кто-то поможет мне в тот день, когда я стану достаточно хорошим, я постараюсь сделать все возможное, чтобы помочь другим тоже )

<<<Вам нужна форма

, которая окружает все поля <form method="POST"> ... </form>. Внутри этой формы вам также понадобится <input>, чтобы данные, которые вводит пользователь, были отправлены в функцию, которая отображает этот html.<button class="btn" type="submit">Submit</button>

Эта функция может выглядеть примерно так (в файле views.py):

def add_appointment(request):
    if request.method == 'POST':
        # retrieve data from input fields
        # save data to MySQL
        return redirect('view_appointment')
    return render(request, 'add_appointment')

Если назначение всегда имеет одни и те же атрибуты, то также было бы проще рассмотреть Models и ModelForms.

Я попробую ответить на этот вопрос, хотя я ни в коем случае не профессионал.

Похоже, что вы неправильно понимаете принцип работы Django. Насколько я понимаю, Django будет взаимодействовать с вашей базой данных за вас. Django models позволяет вам указать, в каком формате вы хотите получить данные, и на основе этого создает для вас таблицы на SQL. Посмотрите "Написание вашего первого приложения Django" часть 2 . В ней есть пример определения моделей и SQL, который django генерирует для этих моделей.

Итак, в вашей ситуации вам необходимы 3 вещи:

  • Модель, определяющая, какие данные вы хотите включить в вашу базу данных, например:

models.py

class AppointmentInformation(models.Model):
    username = models.CharField()
    email = models.EmailField()
    # etc etc
  • Форма. Вы можете позволить Django автоматически генерировать ее из модели, или, если вы не хотите этого делать, вы можете указать форму вручную. Если вы хотите указать форму вручную, посмотрите эту статью о сохранении данных формы Django без использования ModelForm. В любом случае, вам нужно указать, как вы хотите, чтобы форма отображалась в forms.py. Я бы посоветовал просмотреть документацию по построению форм в Django для этого. В вашем HTML сейчас не хватает действия (где браузер будет возвращать данные формы, обычно это будет представление, которое вы написали для обработки данных POST), и метода (если вы отправляете данные, это будет post), например:
  • >
<form action="." method="post">
    <!-- form stuff -->
    <input type="submit" value="OK">
</form>
  • Представление. Это говорит Django, что вы хотите сделать с данными формы, и где данные формы будут сохранены. Например:

views.py

def create_appointment(request):
    if request.method == 'POST':
        # Whatever you named your form in forms.py
        form = ExampleForm(request.POST)
        if form.is_valid():
            # Whatever you named your model.
            obj = ExampleModel()
            # If you used model form, you can use obj.save(). If you 
            # manually specified your form, you'll have to follow the example 
            # in the link above regarding saving data without model form
     else:
         # If request.method == "GET", render form to be filled in webpage.
         form = ExampleForm()
         return render(request, 'add_appointment.html', {'form':form})
     

В приведенном выше представлении функция obj.save() сохранит данные из вашей формы в базе данных.

Если вы новичок в Django, я бы очень рекомендовал пройти учебник на их сайте, а затем пройти его во второй раз, это закрепит рабочий процесс гораздо лучше для вас

Вернуться на верх