Рубрики
Без рубрики

Формы Джанго

В этом руководстве мы будем обсуждать формы в нашем проекте Django. В предыдущих руководствах мы обсуждали шаблоны Django и модели Django. Сегодня,

Автор оригинала: Pankaj Kumar.

В этом руководстве мы будем обсуждать формы в нашем проекте Django. В предыдущих руководствах мы обсуждали шаблоны Django и модели Django. Сегодня мы увидим, как Django формирует работу и использовать их с шаблонами.

Формы Джанго

Формы являются неотъемлемой частью любого веб-приложения, требующего ввода пользователя. Будьте в системе входа в систему, ввод подробности обследования, написание записей в блоге и комментарии (например, мы делаем на MoonningDev!).

Формы Django в основном делает три простых веща:

  • Читать пользовательский ввод
  • Подтвердить это.
  • Преобразуйте его в типы данных Python/объекты

Модели полей карты на типы для базы данных. Формы полей карты в типы Python.

Давайте сначала обсудим HTML-формы, поскольку это то, что будет окончательно отображаться на экране.

Формы HTML

Чтобы создать форму в HTML, приложите его в <ФОРМА> ... <ФОРМА/> теги

Пример:

Форма тега состоит из действий, которое требует вас к упомянутому URL путь, когда Отправить Тип ввода нажат.

В методе мы установили его на Получить или Пост обычно. Метка действует как подсказка для идентификатора ID входного тега, на который он связан.

ПРИМЕЧАНИЕ. Есть несколько других областей, таких как вид на свидание, ловенное поле и многие другие, которые могут быть использованы внутри форм.

Получить использование для отправки данных в виде строки, которая добавляется к URL-адресу. Это ничего не меняет в базе данных.

Почтовый метод используется для подключения данных и отправить его на сервер. Это возвращает ответ. Это обычно используется для обновления базы данных.

Получить уязвимо, чтобы пересечь поддельные атаки сайта, поскольку данные доступны в самом URL.

Получить не следует использовать в таких случаях, как формы пароля. Пост более устойчив к атакам.

Джанго Форма класса

Django делает нашу жизнь проще, обработав крошечные детали, такие как создание и повторное создание форм на странице HTML, подтверждая введенные данные и выполнение любых действий, установленных на формах.

Также как HTML имеет тег формы, у Django есть Форма класс. Класс формы определяется как:

from django import forms

class FirstForm(forms.Form):
    name = forms.CharField(label='Your name', max_length=100)

Мы можем сделать этот класс с помощью шаблонов Django на странице HTML.
Когда кнопка «Отправка» нажат, класс форм будет выполнять проверку проверки, используя метод IS_VALID () на экземпляре вышеуказанного класса.

Как только проверка очищена, данные формы доступны в форме класса Form Cleaned_data атрибут.

Формы Django могут быть двух типов:

неверно – Никакие данные не присутствуют в формах. Они пусты.

связанный – Данные заполнены этими видами форм.

Вышеуказанные концепции могут быть трудно переваривать. Лучшим способом учиться на примере.

В следующем разделе мы создадим базовое веб-приложение Django с реализованными формами.

Наше приложение будет принимать ответы и показать его на следующем экране.

Быстрая установка

Давайте создадим новый проект Django и начните новое приложение внутри него названо Операторpp Отказ

Ниже приводится заказанный список команд, которые мы введены в терминал. Чтобы узнать детали посетите наш первый учебник Django.

mkdir DjangoForms
cd DjangoForms
virtualenv -p /usr/local/bin/python3 env
source env/bin/activate
pip3 install django
django-admin startproject DjangoFormsBasics
cd DjangoFormsBasics
python3 manage.py runserver
django-admin startapp responseapp
cd responseapp
mkdir templates
cd templates
touch responseform.html
touch thankyou.html

Внутри Операторpp Мы создали папку шаблонов, которая удержит файлы HTML.
Внутри папки шаблонов добавьте два файла HTML для двух приложений в PADED, мы построим дальше.

Создайте два новых файла Python: Формасс и URLS.PY :

cd ..
touch forms.py
touch urls.py

Структура проекта

Не забудьте добавить приложение Django в settings.py файл:

Код

Добавьте следующий код в вашу форму. Пункт:

from django import forms

class MyForm(forms.Form):
 name = forms.CharField(label='Enter your name', max_length=100)
 email = forms.EmailField(label='Enter your email', max_length=100)
 feedback = forms.CharField(widget=forms.Textarea(attrs={'width':"100%", 'cols' : "80", 'rows': "20", }))

Мы добавили три поля: Charfields, EmailFields и шарфилд с шириной Textarea и указанной высотой.

Код Views.py файл приведен ниже:

from django.shortcuts import render
from responseapp.forms import MyForm

def responseform(request):
     form = MyForm()

     return render(request, 'responseform.html', {'form':form});

Вы должны использовать CSRF (перекрестные привязки запроса на сайт) для форм Django, которые имеют сообщение метода.

Это делает форму Django и использует язык шаблона, передавая полный экземпляр формы в HTML.

Код для нашего первоначального класса Raventform.html приведен ниже:





    
    Django Forms Tutorial


Django Forms Tutorial

{% csrf_token %} {{form}}

Запустите следующие команды на вашем терминале на папке Inner Djangoformbasics:

python3 manage.py migrate
python3 manage.py runserver

Примечание. Вы должны указать шаблоны URL. Проверьте файлы URLS.PY, определенные позже в этом руководстве.

Ниже приведен выход приложения в действии.

Упс! Это выглядит уродливо горизонтально. Мы можем организовать формы по следующим порядкам:

  • form.as_ul : Поля отображения как неупорядоченный список
  • form.as_p : Отображение полей, как параграф в отдельной строке
  • form.as_table : Поля отображения как элементы таблицы

    {{form.as_table}}

 

Для form_as_ul Вы должны приложить его в UL тег.

Кроме того, кнопка «Отправка» не работает, давайте добавим другую HTML-страницу, которая будет поймать ответы формы и отображать там.

Обновленный код для imageForm.html приведен ниже:





    
    Django Forms Tutorial


Django Forms Tutorial

{% csrf_token %} {{form.as_table}}

В приведенном выше коде мы добавили метод и действие. При нажатии на отправку Пользователь будет доставлен в/Commandyou/Page с данными форм Пост ред.

Код для Views.py файл приведен ниже:

from django.shortcuts import render
from responseapp.forms import MyForm
from django.template import loader
from django.http import HttpResponse


def responseform(request):
 #if form is submitted
     if request.method == 'POST':
        myForm = MyForm(request.POST)

        if myForm.is_valid():
            name = myForm.cleaned_data['name']
            email = myForm.cleaned_data['email']
            feedback = myForm.cleaned_data['feedback']

            context = {
            'name': name,
            'email': email,
            'feedback': feedback
            }

            template = loader.get_template('thankyou.html')

            return HttpResponse(template.render(context, request))



     else:
         form = MyForm()

     return render(request, 'responseform.html', {'form':form});

Первоначально еще Заявление будет выполнять и создать пустую форму.

Позже при нажатии на отправку Если Блок выполнен, и если форма подтверждена, мы загружаем страницу Cableyou.html с помощью погрузчиков с шаблонами Django.

Данные формы передаются на Charkyou.html класс как:





    
    Thank You


Response Entered by you:

  • Name: {{ name }}
  • Email: {{ email }}
  • Feedback: {{ feedback }}

Код для URLS.PY создан внутри Операторpp Папка:

from django.urls import path
from django.contrib import admin

from responseapp import views as responseapp_views

urlpatterns = [
 path('response/', responseapp_views.responseform),
 path('thankyou/', responseapp_views.responseform),

path('', admin.site.urls),
]

appressapp_views так же, как ОтзывыPP.Views Отказ Это вызывает файл Similitys.py, откуда начинается приложение.

Ниже URLS.PY Файл должен быть включен во внешнее URLS.PY Файл определен в проекте DjangoForm:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('responseapp.urls'))
]

Выход приложения в действии:

Это приводит к концу этому руководству. Вы можете скачать проект снизу: