Обновить представление - представления на основе функций Django

Опубликовано: 24 Февраля, 2022

Обновить представление относится к представлению (логике) для обновления определенного экземпляра таблицы из базы данных с некоторыми дополнительными сведениями. Он используется для обновления записей в базе данных, например, для обновления статьи на geeksforgeeks. Таким образом, представление «Обновить» должно отображать старые данные в форме и позволять пользователю обновлять данные только оттуда. Django обеспечивает экстраординарную поддержку обновлений представлений, но давайте проверим, как это делается вручную с помощью функционального представления. Эта статья посвящена обновлению View, в котором используются такие концепции, как Django Forms, Django Models.

Для просмотра обновлений нам нужен проект с некоторыми моделями и несколькими экземплярами, которые будут отображаться. По сути, представление «Обновить» представляет собой комбинацию представления «Подробности» и представления «Создать».

Представление обновлений Django - представления на основе функций

Иллюстрация того, как создать и использовать представление «Обновить» на примере. Рассмотрим проект под названием geeksforgeeks, в котором есть приложение под названием geeks.

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

  • How to Create a Basic Project using MVT in Django?
  • How to Create an App in Django ?

После того, как у вас есть проект и приложение, давайте создадим модель, экземпляры которой мы будем создавать с помощью нашего представления. В geeks / models.py,

Python3

# import the standard Django Model
# from built-in library
from django.db import models
  
# declare a new model with a name "GeeksModel"
class GeeksModel(models.Model):
 
    # fields of the model
    title = models.CharField(max_length = 200)
    description = models.TextField()
 
    # renames the instances of the model
    # with their title name
    def __str__(self):
        return self.title

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

 Python manage.py makemigrations
Python manage.py migrate

Теперь давайте создадим несколько экземпляров этой модели с помощью оболочки, запустим форму bash,

 Оболочка Python manage.py

Введите следующие команды

 >>> из geeks.models импортировать GeeksModel
>>> GeeksModel.objects.create (
                       title = "title1",
                       description = "description1"). save ()
>>> GeeksModel.objects.create (
                       title = "title2",
                       description = "description2"). save ()
>>> GeeksModel.objects.create (
                       title = "title2",
                       description = "description2"). save ()

Теперь у нас все готово для бэкенда. Убедитесь, что экземпляры были созданы с http: // localhost: 8000 / admin / geeks / geeksmodel /

Now we will create a Django ModelForm for this model. Refer this article for more on modelform – Django ModelForm – Create form from Models. create a file forms.py in geeks folder, 

Python3

from django import forms
from .models import GeeksModel
 
 
# creating a form
class GeeksForm(forms.ModelForm):
 
    # create meta class
    class Meta:
        # specify model to be used
        model = GeeksModel
 
        # specify fields to be used
        fields = [
            "title",
            "description"]

Для Update_view потребуется некоторая идентификация, чтобы получить конкретный экземпляр модели. Обычно это уникальный первичный ключ, такой как id . Чтобы указать эту идентификацию, нам нужно определить ее в urls.py. Зайдите в geeks / urls.py,

Let’s create these views with explanations. In geeks/views.py,

Python3

from django.shortcuts import (get_object_or_404,
                              render,
                              HttpResponseRedirect)
 
# relative import of forms
from .models import GeeksModel
from .forms import GeeksForm
 
# after updating it will redirect to detail_View
def detail_view(request, id):
    # dictionary for initial data with
    # field names as keys
    context ={}
  
    # add the dictionary during initialization
    context["data"] = GeeksModel.objects.get(id = id)
          
    return render(request, "detail_view.html", context)
 
# update view for details
def update_view(request, id):
    # dictionary for initial data with
    # field names as keys
    context ={}
 
    # fetch the object related to passed id
    obj = get_object_or_404(GeeksModel, id = id)
 
    # pass the object as instance in form
    form = GeeksForm(request.POST or None, instance = obj)
 
    # save the data from the form and
    # redirect to detail_view
    if form.is_valid():
        form.save()
        return HttpResponseRedirect("/"+id)
 
    # add form dictionary to context
    context["form"] = form
 
    return render(request, "update_view.html", context)

Now create following templates in templates folder, 
In geeks/templates/update_view.html,

HTML

<div class="main">
    <!-- Create a Form -->
    <form method="POST">
        <!-- Security token by Django -->
        {% csrf_token %}
 
        <!-- form as paragraph -->
        {{ form.as_p }}
 
        <input type="submit" value="Update">
    </form>
 
</div>

In geeks/templates/detail_view.html, 

HTML

<div class="main">
    <!-- Display attributes of instance -->
    {{ data.title }} <br/>
    {{ data.description }}
</div>

Давайте проверим, все ли работает, посетив http: // localhost: 8000/1 / update.

Здесь вы можете увидеть форму с данными, уже заполненными из экземпляра. Теперь можно редактировать эти данные и легко обновлять их, давайте проверим.

Нажмите "Обновить" и готово.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.