创建视图是指在数据库中创建表实例的视图(逻辑)。我们已经在中讨论了创建视图的基础创建视图–基于函数的视图Django。基于类的视图提供了一种将视图实现为Python对象而非函数的替代方法。它们不能代替基于功能的视图, 但是与基于功能的视图相比具有某些区别和优点:
- 与特定的HTTP方法(GET, POST等)相关的代码组织可以通过单独的方法而不是条件分支来解决。
- 诸如mixin(多重继承)之类的面向对象技术可用于将代码分解为可重用组件。
Django创建视图–基于类的视图 的插图如何创建和使用创建视图用一个例子。考虑一个名为极客有一个名为极客.
【Createview–基于类的视图Django】请参阅以下文章, 以检查如何在Django中创建项目和应用。如何在Django中使用MVT创建基本项目?如何在Django中创建应用程序?在拥有一个项目和一个应用程序之后, 让我们创建一个模型, 我们将通过我们的视图创建该模型。在怪胎/models.py,
# 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
基于类的视图会自动设置从A到Z的所有内容。只需指定要为其创建创建视图的模型和字段。然后基于Class的CreateView将自动尝试在其中查找模板app_name/modelname_form.html。在我们的情况下是geeks/templates/geeks/geeksmodel_form.html。让我们创建基于类的视图。在geeks/views.py,
from django.views.generic.edit import CreateView
from .models import GeeksModelclass GeeksCreate(CreateView):# specify the model for create view
model = GeeksModel# specify the fields to be displayedfields = [ 'title' , 'description' ]
现在创建一个URL路径以映射视图。在geeks/urls.py中,
from django.urls import path# importing views from views..py
from .views import GeeksCreate
urlpatterns = [
path('', GeeksCreate.as_view() ), ]
在中创建模板template/geeks/geeksmodel_form.html,
<
form method = "POST" enctype = "multipart/form-data">
<
!-- Security token -->
{% csrf_token %}<
!-- Using the formset -->
{{ form.as_p }}<
input type = "submit" value = "https://www.lsbin.com/Submit">
<
/form>
让我们检查一下
http://本地主机:8000 /
文章图片
现在, 让我们尝试以这种形式输入数据,
文章图片
答对了。!创建视图正在运行, 我们可以使用通过管理面板创建的实例进行验证。
文章图片
这样, 就可以在Django中为模型创建创建视图。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- MongoDB与MySQL有什么区别(功能上和使用上?)
- PHP abs()函数用法示例
- Virtusa面试经验|实习
- Linux stty命令用法示例介绍
- 高级数据结构(K-ary堆原理和实现代码详解)
- 如何在AngularJS中使用ng-click直接更新字段()
- C++中的纯虚函数和抽象类详细指南
- Node.js fs.readdirSync()方法用法示例
- 你需要知道的JavaScript ES2021特性