Как вставить данные из 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, я бы очень рекомендовал пройти учебник на их сайте, а затем пройти его во второй раз, это закрепит рабочий процесс гораздо лучше для вас