Обновить представление - представления на основе функций Django
Обновить представление относится к представлению (логике) для обновления определенного экземпляра таблицы из базы данных с некоторыми дополнительными сведениями. Он используется для обновления записей в базе данных, например, для обновления статьи на 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.