- 列表显示
- 详细视图
- 与特定的HTTP方法(GET, POST等)相关的代码组织可以通过单独的方法而不是条件分支来解决。
- 诸如mixin(多重继承)之类的面向对象技术可用于将代码分解为可重用组件。
文章图片
创建视图
–在数据库的表中创建或添加新条目。
检索视图
–以列表形式读取, 检索, 搜索或查看现有条目(
列表显示
)或详细检索特定条目(
详细视图
)
更新视图
–更新或编辑数据库表中的现有条目
删除视图
–删除, 停用或删除数据库表中的现有条目
表格浏览
–将表单呈现为模板并处理用户输入的数据
Django CRUD(创建, 检索, 更新, 删除)基于类的视图 的插图如何创建和使用CRUD视图用一个例子。考虑一个名为极客有一个名为极客.
请参阅以下文章, 以检查如何在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 makemigrationsPython manage.py migrate
现在, 我们将为此模型创建一个Django ModelForm。请参阅本文以获取更多有关modelform的信息–Django ModelForm –从模型创建表单。创建一个文件表格在极客文件夹中,
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" , ]
使用基于类的视图
从本质上讲, 基于类的视图使你可以使用不同的类实例方法来响应不同的HTTP请求方法, 而不是使用单个视图函数中的有条件分支代码。
【基于类的通用视图Django(创建,检索,更新,删除)】因此, 在视图函数中用于处理HTTP GET的代码将如下所示:
from django.http import HttpResponsedef my_view(request):
if request.method = = 'GET' :
# <
view logic>
return HttpResponse( 'result' )
在基于类的视图中, 这将变为:
from django.http import HttpResponse
from django.views import Viewclass MyView(View):
def get( self , request):
# <
view logic>
return HttpResponse( 'result' )
同样在urls.py, 一个需要使用as_view()从基于函数的视图区分基于类的视图的方法。
# urls.py
from django.urls import path
from myapp.views import MyViewurlpatterns = [path( 'about/' , MyView.as_view()), ]
创建视图
创建视图是指在数据库中创建表实例的视图(逻辑)。我们已经在"创建视图-基于函数的视图Django"中讨论了创建视图的基础。基于类的视图会自动设置从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 /
文章图片
要检查基于Class的CreateView的完整实现, 请访问
Createview –基于类的视图Django
.
检索视图
列表显示 列表视图是指用于显示数据库中表的多个实例的视图(逻辑)。我们已经在中讨论了列表视图的基础列表视图–基于函数的视图Django。基于类的视图会自动设置从A到Z的所有内容。只需指定要为其创建ListView的模型, 然后基于类的ListView将自动尝试在其中找到模板app_name / modelname_list.html。在我们的情况下是geeks / templates / geeks / geeksmodel_list.html。让我们创建基于类的视图。在geeks / views.py,
from django.views.generic. list import ListView
from .models import GeeksModelclass GeeksList(ListView):# specify the model for list view
model = GeeksModel
现在创建一个URL路径以映射视图。在geeks / urls.py中,
from django.urls import path# importing views from views..py
from .views import GeeksList
urlpatterns = [
path('', GeeksList.as_view()), ]
在中创建模板templates / geeks / geeksmodel_list.html,
<
ul >
<
!-- Iterate over object_list -->
{% for object in object_list %}
<
!-- Display Objects -->
<
li >
{{ object.title }}<
/ li >
<
li >
{{ object.description }}<
/ li >
<
hr />
<
!-- If objet_list is empty-->
{% empty %}
<
li >
No objects yet.<
/ li >
{% endfor %}
<
/ ul >
让我们检查一下
http://本地主机:8000 /
文章图片
要检查基于Class的ListView的完整实现, 请访问
ListView –基于类的视图Django
详细视图 详细视图是指一种视图(逻辑), 用于显示数据库中表的一个实例。我们已经在中讨论了细节视图的基础细节视图–基于函数的视图Django。基于类的视图会自动设置从A到Z的所有内容。只需指定要为其创建DetailView的模型, 然后基于类的DetailView将自动尝试在其中查找模板。app_name / modelname_detail.html。在我们的情况下是geeks / templates / geeks / geeksmodel_detail.html。让我们创建基于类的视图。在geeks / views.py,
from django.views.generic.detail import DetailViewfrom .models import GeeksModelclass GeeksDetailView(DetailView):
# specify the model to use
model = GeeksModel
现在创建一个URL路径以映射视图。在geeks / urls.py中,
from django.urls import path# importing views from views..py
from .views import GeeksDetailView
urlpatterns = [
# <
pk>
is identification for id field, # slug can also be used
path( '<
pk>
/' , GeeksDetailView.as_view()), ]
在中创建模板templates / geeks / geeksmodel_detail.html,
<
h1 >
{{ object.title }}<
/ h1 >
<
p >
{{ object.description }}<
/ p >
让我们检查一下
http://本地主机:8000/1 /
文章图片
要检查基于Class的DetailView的完整实现, 请访问
DetailView –基于类的视图Django
更新视图
UpdateView引用一个视图(逻辑)以使用一些额外的细节来更新数据库中表的特定实例。它用于更新数据库中的小肠, 例如, 更新lsbin上的文章。我们已经在中讨论了更新视图的基础更新视图–基于函数的视图Django。基于类的视图会自动设置从A到Z的所有内容。只需要指定要为其创建UpdateView的模型, 然后基于类的UpdateView就会自动尝试在其中找到模板app_name / modelname_form.html。在我们的情况下是geeks / templates / geeks / geeksmodel_form.html。让我们创建基于类的视图。在geeks / views.py,
# import generic UpdateView
from django.views.generic.edit import UpdateView# Relative import of GeeksModel
from .models import GeeksModelclass GeeksUpdateView(UpdateView):
# specify the model you want to use
model = GeeksModel# specify the fields
fields = [
"title" , "description"
]# can specify success url
# url to redirect after successfully
# updating details
success_url = "/"
现在创建一个URL路径以映射视图。在geeks / urls.py中,
from django.urls import path# importing views from views..py
from .views import GeeksUpdateView
urlpatterns = [
# <
pk>
is identification for id field, # <
slug>
can also be used
path( '<
pk>
/update' , GeeksUpdateView.as_view()), ]
在中创建模板template / geeks / geeksmodel_form.html,
<
form method = "post" >
{% csrf_token %}
{{ form.as_p }}
<
input type = "submit" value = "https://www.lsbin.com/Save" >
<
/ form >
让我们检查一下
http:// localhost:8000/1 / update /
文章图片
要检查基于Class的UpdateView的完整实现, 请访问UpdateView –基于类的视图Django.
删除视图
删除视图是指从数据库中删除表的特定实例的视图(逻辑)。它用于删除数据库中的小肠, 例如, 删除lsbin上的文章。我们已经在中讨论了删除视图的基础删除视图–基于函数的视图Django。基于类的视图会自动设置从A到Z的所有内容。只需指定要为其创建DeleteView的模型, 然后基于类的DeleteViewde就会自动尝试在其中找到模板app_name / modelname_confirm_delete.html。在我们的情况下是geeks / templates / geeks / geeksmodel_confirm_delete.html。让我们创建基于类的视图。在geeks / views.py,
# import generic UpdateView
from django.views.generic.edit import DeleteView# Relative import of GeeksModel
from .models import GeeksModelclass GeeksDeleteView(DeleteView):
# specify the model you want to use
model = GeeksModel# can specify success url
# url to redirect after successfully
# deleting object
success_url = "/"
现在创建一个URL路径以映射视图。在geeks / urls.py中,
from django.urls import path# importing views from views..py
from .views import GeeksDeleteView
urlpatterns = [
# <
pk>
is identification for id field, # slug can also be used
path( '<
pk>
/delete/' , GeeksDeleteView.as_view()), ]
在中创建模板template / geeks / geeksmodel_confirm_delete.html,
<
form method = "post" >
{% csrf_token %}
<
p >
Are you sure you want to delete "{{ object }}"?<
/ p >
<
input type = "submit" value = "https://www.lsbin.com/Confirm" >
<
/ form >
让我们检查一下
http:// localhost:8000/1 /删除
文章图片
.
要检查基于Class的DeleteView的完整实现, 请访问
DeleteView –基于类的视图Django
表格浏览
FormView是指用于显示和验证Django表单的视图(逻辑)。例如, 用于在lsbin注册用户的表单。基于类的视图会自动设置从A到Z的所有内容。只需要指定为其创建FormView和template_name的表单, 然后基于类的FormView将自动呈现该表单。让我们创建基于类的视图。在geeks / views.py,
# import generic FormView
from django.views.generic.edit import FormView# Relative import of GeeksForm
from .forms import GeeksFormclass GeeksFormView(FormView):
# specify the Form you want to use
form_class = GeeksForm# sepcify name of template
template_name = "geeks / geeksmodel_form.html"# can specify success url
# url to redirect after successfully
# updating details
success_url = "/thanks/"
在中为此视图创建模板geeks / geeksmodel_form.html,
<
form method = "post" >
{% csrf_token %}
{{ form.as_p }}
<
input type = "submit" value = "https://www.lsbin.com/Save" >
<
/ form >
将网址映射到怪胎/ urls.py,
from django.urls import path# importing views from views..py
from .views import GeeksFormView
urlpatterns = [
path('', GeeksFormView.as_view()), ]
现在访问
http://127.0.0.1:8000/
,
文章图片
要检查基于Class的FormView的完整实现, 请访问
FormView –基于类的视图Django
注意怪胎!巩固你的基础Python编程基础课程和学习基础知识。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- PHP如何使用SplDoublyLinkedList add()函数()
- 算法(如何计算每个字符至少出现k次的最长子序列())
- 本图文详细教程教你win10企业版激活
- 本图文详细教程教你Win10如何更改帐户名称
- 本图文详细教程教你Win10如何把常用设置项固定到开始菜
- 本图文详细教程教你xp升级win10
- 本文教您win10怎样设置cf全屏
- 本文教您win10系统中输入法打开不了怎样处理
- 本图文详细教程教你Win10如何打开画图工具