Рубрики

ImageField — Джанго формы

ImageField в Django Forms — это поле ввода для загрузки файлов изображений. По умолчанию виджет для этого ввода — ClearableFileInput . Он нормализуется до: объекта UploadedFile, который упаковывает содержимое файла и имя файла в один объект. Эта статья посвящена тому, как загружать изображения с помощью форм Django и как их сохранить в базе данных.

Замечания:

  • Когда Django обрабатывает загрузку файла, данные файла в конечном итоге помещаются в request.FILES (подробнее об объекте request см. Документацию по объектам request и response).
  • При работе с файлами убедитесь, что тег HTML-формы содержит enctype=multipart/form-data .

Синтаксис

field_name = forms.ImageField(**options)

Джанго форма ImageField Пояснение

Иллюстрация ImageField с использованием примера. Рассмотрим проект с именем geeksforgeeks , в котором есть приложение с именем geeks .

Refer to the following articles to check how to create a project and an app in Django.

Введите следующий код в файл forms.py приложения geeks .

from django import forms

  

class GeeksForm(forms.Form):

    name = forms.CharField()

    geeks_field = forms.ImageField()

Добавьте приложение гиков в INSTALLED_APPS

# Определение приложения

  

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'geeks',

]

Теперь, чтобы преобразовать эту форму в представление, нам нужно представление и URL, сопоставленный с этим URL. Давайте сначала создадим представление в views.py приложения geeks,

from django.shortcuts import render

from .forms import GeeksForm

  
# Создайте свои взгляды здесь.

def home_view(request):

    context = {}

    context['form'] = GeeksForm()

    return render( request, "home.html", context)

Здесь мы импортируем эту конкретную форму из forms.py и создаем ее объект в представлении, чтобы ее можно было отобразить в шаблоне.
Теперь, чтобы инициировать форму Django, вам нужно создать home.html, где можно будет создавать вещи по своему усмотрению. Давайте создадим форму в home.html .

<form method="POST" enctype="multipart/form-data">

    {% csrf_token %}

    {{ form.as_p }}

    <input type="submit" value="Submit">

</form>

Наконец, URL для сопоставления с этим представлением в urls.py

from django.urls import path

  
# импорт видов из views..py

from .views import home_view

  

urlpatterns = [

    path('', home_view ),

]

Давайте запустим сервер и проверим, что на самом деле произошло, Запустите

Python manage.py runserver

Таким образом, geeks_field ImageField создается путем замены «_» на ««. Это поле для ввода файлов изображений от пользователя.

Как загрузить файлы с использованием ImageField — Django Forms?

ImageField используется для ввода файлов изображений в базу данных. Можно ввести идентификатор электронной почты и т. Д. До сих пор мы обсуждали, как реализовать ImageField, но как использовать его в представлении для выполнения логической части. Для выполнения некоторой логики нам нужно получить значение, введенное в поле, в экземпляр строки Python.
ImageField отличается от других полей и должен обрабатываться правильно. Как указано выше, данные, извлеченные из ImageField, будут сохранены в объекте request.FILES . Давайте создадим ImageField в моделях Django, чтобы продемонстрировать сохранение изображений с использованием форм в базе данных. Чтобы получить рабочий код для загрузки файлов с github, нажмите здесь .
В models.py,

from django.db import models

  
# Создайте свои модели здесь.

class GeeksModel(models.Model):

    title = models.CharField(max_length = 200)

    img = models.ImageField(upload_to = "images/")

  

    def __str__(self):

        return self.title

В views.py,

from django.shortcuts import render

from .forms import GeeksForm

from .models import GeeksModel

  
# Создайте свои взгляды здесь.

def home_view(request):

    context = {}

    if request.method == "POST":

        form = GeeksForm(request.POST, request.FILES)

        if form.is_valid():

            name = form.cleaned_data.get("name")

            img = form.cleaned_data.get("geeks_field")

            obj = GeeksModel.objects.create(

                                 title = name, 

                                 img = img

                                 )

            obj.save()

            print(obj)

    else:

        form = GeeksForm()

    context['form']= form

    return render(request, "home.html", context)

Давайте объясним, что делает этот код, этот код сохраняет загруженный пользователем файл в базе данных GeeksModel ImageField. Всякий раз, когда файл загружается, он сохраняется в объекте request.FILES с ключом в качестве имени поля. Итак, мы создали модель, в которой сохранено загруженное пользователем изображение. Давайте попробуем сохранить файл изображения в базе данных сейчас.

Он успешно загружен, и файл сохраняется в GeeksModel приложения geeks. Obove объект печатается и, следовательно, экземпляр obj был создан.

Основные Полевые Аргументы

Аргументы основного поля — это аргументы, данные каждому полю для применения какого-либо ограничения или передачи определенной характеристики конкретному полю. Например, добавление аргумента required = False в ImageField позволит пользователю оставить его пустым. Каждый конструктор класса Field принимает как минимум эти аргументы. Некоторые классы Field принимают дополнительные специфичные для поля аргументы, но всегда следует принимать следующее:

Field OptionsDescription
requiredBy default, each Field class assumes the value is required, so to make it not required you need to set required=False
labelThe label argument lets you specify the “human-friendly” label for this field. This is used when the Field is displayed in a Form.
label_suffixThe label_suffix argument lets you override the form’s label_suffix on a per-field basis.
widgetThe widget argument lets you specify a Widget class to use when rendering this Field. See Widgets for more information.
help_textThe help_text argument lets you specify descriptive text for this Field. If you provide help_text, it will be displayed next to the Field when the Field is rendered by one of the convenience Form methods.
error_messagesThe error_messages argument lets you override the default messages that the field will raise. Pass in a dictionary with keys matching the error messages you want to override.
validatorsThe validators argument lets you provide a list of validation functions for this field.
localizeThe localize argument enables the localization of form data input, as well as the rendered output.
disabledThe disabled boolean argument, when set to True, disables a form field using the disabled HTML attribute so that it won’t be editable by users.

Рекомендуемые посты:

ImageField — Джанго формы

0.00 (0%) 0 votes