首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django MVC概述和开发流程

控制器(Controller) 负责用户获取输入,是应用程序中处理用户交互部分,通常控制器负责视图读取数据,控制用户输入,并向模型发送数据。...数据库中表命名为应用命_模型类名,而且在模型类中添加了则会生成命名为模型类名_id字段。...: st1 = StudentInfo() st1.name = '张三' st1.age = 18 st1.gender = True # 直接赋值模型类对应实例对象 st1.school =...{# 注释 #} 表示注释,不会出现在最终渲染出来html文件中; {{ 变量名 }} 表示在模板中使用变量,变量可以是视图函数中传递过来,也可以是在模板中定义; {% 代码段 %} 表示在模板中编写代码段...3.在视图中调用模板 调用模板分为三部: 1.加载模板 2.构造上下文 3.渲染模板,并返回http响应 修改之前在应用下views.py定义视图函数 from django.http import

1.7K10

django中ModelForm多表单组合解决方案

可以看到,除去定义model或者form类,几行代码就可以搞定这么多事。我们看看CreateView继承关系: 简单介绍下CreateView通用视图中每个父类作用。...那么,第1部分我介绍Form里prefix,以及第3部分里类图中ProcessFormView允许重定义form_valid,以及第2部分中ModelFormsave方法行为控制,解决方案已经一目了然了...PrimeContractForm表单对应模型,此时是不能save,因为project和address对应数据库记录还没有创建,所以commit传为False           contract...()           #按照四条数据库记录顺序依次创建(调用save方法)、主键赋到下一条记录中、下一次记录创建(save)           projectAddress = context...['projectAddressForm'].save()           #项目表单中获取到模型,先把地址id赋到外上再保存           project = context['projectForm

3.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Python Django框架笔记(五):模型

该层处理与数据相关所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间关系等。 T代表模板(Template),即表现层。...该层处理与表现相关决定: 如何在页面或其他类型文档中进行显示。 V代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板相关逻辑。 你可以把它看作模型与模板之间桥梁。...如果你熟悉其它 MVC Web开发框架,比方说 Ruby on Rails,你可能会认为 Django 视图是控制器,而 Django 模板是视图。...player_email = models.EmailField()#邮箱 22 team = models.ForeignKey(Team,on_delete=models.CASCADE)#...coach_email = models.EmailField() 32 team = models.ForeignKey(Team,on_delete=models.CASCADE) #

2K60

使用AJAX获取Django后端数据

使用Django服务网页时,只要用户执行导致页面更改操作,即使该更改仅影响页面的一小部分,它都会将完整HTML模板传递给浏览器。...让我们看一下如何通过获取发出GET和POST请求,以在视图和模板之间传递JSON数据。 GET请求 通过获取发出GET请求 通过向其提供视图URL和适当headers参数来进行获取GET请求。...除了JSON数据(包括文件和来自表单数据),其他数据也可以在正文中发送。 有关如何包含其他类型数据更多信息,请参见MDN文档。...我们POST请求中获得响应将像GET请求一样使用链式承诺进行处理。 在视图中处理POST请求 接受POST请求视图将从请求中获取数据,对其执行一些操作,然后返回响应。...AJAX请求应仅限于Django项目的一小部分。如果发现自己在多个模板中使用它们来获取大量数据,请考虑使用Django Rest Framework创建API。

7.5K40

Django 1.10中文文档-第一个应用Part7-自定义管理站点

Django在admin站点中,自动地将所有的关系展示为一个select框。在我们例子中,目前只有一个question对象存在。 请注意图中绿色加号,它连接到Question模型。...每一个包含关系对象都会有这个绿色加号。点击它,会弹出一个新增Question表单,类似Question自己添加表单。...填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice关联对象。通俗讲就是,新建一个Question并作为当前Choice。...自定义应用模板 聪明读者可能会问:但是DIRS默认是空Django如何找到默认admin模板呢?...要定制管理站点首页,需要重写admin/index.html模板,就像前面修改base_site.html模板方法一样,源码目录拷贝到你指定目录内。

3.6K60

Python面试题:Django Web框架基础与进阶

数据库操作:ORM:描述Django ORM基本使用,包括定义模型、执行CRUD操作、查询过滤等。数据库迁移:解释Django数据库迁移机制,演示如何创建、应用、回滚迁移。...视图与模板:视图函数与类视图:对比视图函数与类视图优缺点,给出使用场景示例。模板语言:列举Django模板语言主要功能(如循环、条件、模板继承、模板标签等),并编写简单示例。...二、进阶问题概览中间件与信号:中间件:描述中间件作用、生命周期及其在请求处理过程中位置,编写自定义中间件示例。信号:解释Django信号机制,列举常用信号类型,演示如何发送、接收信号。...用户认证与授权:认证系统:描述Django自带认证系统,包括用户模型、登录/登出、密码管理等。权限与组:解释Django权限系统,演示如何为用户分配权限、创建用户组,以及在视图中进行权限检查。...规避:遵循数据库设计原则,合理使用、多对多关系、索引,避免数据冗余。模板过度嵌套与逻辑混杂:误区:在模板中编写过多业务逻辑,导致模板层次过深、可读性差。

13410

Django框架学习(三)

我们使用模板详细步骤: 1、加载模板:指定使用模板文件,获取模板对象 from django.template import loader temp = loader.get_template('模板文件名...{% block 名称 %} 实际填充内容 {{ block.super }}用于获取模板中block内容 {% endblock 名称 %} 3.4.6Django和Flask模板区别 1、模板变量...%} # 遍历为空时逻辑 {% endfor %} # Django模板中for循环 {% for ... in ... %} # 遍历不为空时数据 # 获取for循环遍历到了第几次...AutoField选项使用 unique 如果为True, 这个字段在表中必须有唯一值,默认值是False 在设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理...,在django.db.models中包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外表中数据 PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据

1.8K40

关于“Python”核心知识点整理大全53

输出可 知,主题ChessID为1,而Rock ClimbingID为2。 知道对象ID后,就可获取该对象并查看其任何属性。...of the game, roughly...>, <Entry: In the opening phase of the game, it's important t...>] 为通过关系获取数据...例如, 假设你有模型Pizza和Topping,而Topping通过一个关联到Pizza;如果你有一个名为my_pizza 对象,表示一张比萨,就可使用代码my_pizza.topping_set.all...URL模式描述了URL是如何设计,让Django知道如何将浏览器请求与网站 URL匹配,以确定返回哪个网页。 每个URL都被映射到特定视图——视图函数获取并处理网页所需数据。...18.3.3 编写模板 模板定义了网页结构。模板指定了网页是什么样,而每当网页被请求时,Django将填入 相关数据。模板让你能够访问视图提供任何数据。

9210

Django相关知识点回顾

失败中汲取教训,寻找失败原因,为成功做铺垫。你比别人承受更多,你最后获得成果越丰硕。不要沮丧,不要畏惧,第三者角度看自己,你都会瞧不起自己。...%} # 遍历为空时逻辑 {% endfor %} # Django模板中for循环 {% for ... in ... %} # 遍历不为空时逻辑 # 获取for循环遍历到了第几次...class Meta: db_table = '' 定义属性: # 表中外字段名格式: hbook = models.ForeignKey('BookInfo...() # 由多查1 多对象.属性 例:hero.hbook 2.通过模型类进行关联查询 # 查图书(一) 一类.objects.get|filter(多类名__字段__条件=值) 例:books =...BookInfo.objects.filter(heroinfo__hcomment__contains='八') # 查英雄(多) 多类.objects.filter(属性__字段__条件=值)

10K51

用python搭建一个校园维基网站(二)—— 可编辑内容首页创建

我们WikiHome页面模型中需要图中红色高亮一系列字段,其中title字段继承自Page类,不用额外添加,image字段为连接到wagtailimages.Image模型。...还包含了一个wagtail提供对ForeignKey进行了一层封装ParentalKey连接到它所属WikiHome页面。类似的,panels表明出现在可编辑区。 ? ?...WikiHomeTopLink类似,为了层次上更清晰,采用了多重继承,在models.py中只定义ParentalKey,而在另一个文件中定义了RelatedLink模型,包含字段有链接文本和具体链接...对于模板来说,它对应页面模型处于它上下文环境,在模板中可以调用到该页面模型中所有元素(使用Django模板语言)。我们要按照页面排版将元素填充进去。...这样,大致就成功了,但是模板中倒数几行里{% load wiki_tags %} {% wikihome_footer %}还没有实现,它就是之前图中黄色框圈住页脚了。

3.5K80

35.Django2.0文档

该层处理与数据相关所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间关系等    T:代表模板(Template),即表现层。...该层处理与表现相关决定: 如何在页面或其他类型文档中进行显示。   V:代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板相关逻辑。 你可以把它看作模型与模板之间桥梁。  ...它有一个或多个作者(和作者是多对多关联关系[many-to-many]), 只有一个出版商(和出版商是一对多关联关系[one-to-many],也被称作          [foreign key...默认地,管理工具使用`` 下拉框`` 来展现`` `` 字段。但是,正如`` 多对多字段`` 那样,有时候你不想忍受因装载并显示这些选项而产生大量开销。...解决这个问题办法是使用`` raw_id_fields`` 选项。它是一个包含字段名称元组,它包含字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。

11.3K100

Django篇(一)

简单整理一下思路: 比如一个登陆网页(也就是视图),点击登陆时候,将账号和密码发送到MVC框架中控制器(Controller),我们控制器中进行处理,需要去查询数据库,但是这里不会直接去操作数据库...Models中添加一个类: class person(models.Model): # name name = models.CharField(max_length=20) # ...sid = models.ForeignKey('stuinfo') 多表联查有个,我们通过来查询 通过第一张表查询第二张表 s1 = student.objects.get(id =...在视图中写: # 导入模块 from django.http import HttpResponse 定义index方法,必须要有参数,(用于接收参数) def index(request):...这样写了之后,我们依然可以访问,但是这样代码不许需要我们来写,在Django中已经封装好了。 我们直接写成: ? 就可以达到和我们之前一样效果。 4、如何使用views中参数字典?

1K30

后端框架学习-Django

在该模式下依然存在控制层C,即主路由 Django模板模板层创建 模板:根据字典数据动态变化html网页,根据视图中传递字典数据动态生成相应html页面 模板配置: 创建模板文件夹 ...一对一映射 创建一对一: 语法:OneToOneField(类名, on_delete=xxx(级联删除:在存在前提下删除规则)) on_delete: models.CASCADE:级联删除...创建一对一数据 无模型类,和之前相同 有模型类: wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:查对象 反向查询:对象查 调用反向属性查询到关联一方...无模型类,和之前相同 有模型类: 类似上面 wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例)

9.3K40

django 1.8 官方文档翻译: 3-4-2 内建显示视图

Django尝试model和 template层移除一些单调情况,但是Web开发者依然会在view(视图)层经历这种厌烦。 Django通用视图被开发用来消除这一痛苦。...的确,大多数来自Django开发新手 问题是如何能使得通用视图使用范围更广。...DetailView通用视图提供了一个publisher对象给context,但是我们如何模板中添加附加信息呢?...然而,通过使用queryset来定义一个过滤对象列表,你可以更加详细 了解哪些对象将会被显示图中(参见执行查询来获取更多关于查询集对象更对信息,以及参见 基于类视图参考来获取全部 细节)。...让这种方式能够工作关键点,在于当类视图被调用时,各种有用对象被存储在self上;同request()(self.request)一样,其中包含了URLconf中获取位置参数 (self.args

1.4K40

一杯茶时间,上手 Django 框架开发

理解模板:网页前端实现 上一步中,我们学会了如何实现视图,并将其接入路由配置中,使其能够被用户访问。接下来,我们将实现一个 Django 模板作为网页前端,从而给用户呈现更丰富内容。...-- 获取字典或对象属性 --> {{ dict.key }} {{ object.attribute }} <!...news/index.html•context:传入模板上下文对象,必须是一个字典,字典中每个对应模板变量。...在视图中添加数据查询 最后,我们在视图中加入数据库中查询代码: from django.shortcuts import render from .models import Post def...Django 还有很多很多高级玩法,例如数据模型中高级查询、字段索引、更换数据库等等,模板继承机制、内部标签等等,还有视图中如何处理各类请求(POST、PUT等),我们会在后续更多教程中逐一为大家讲解

1.5K21

Django性能之道:缓存应用与优化实战

获取缓存数据:cache.get(key)方法用于从缓存中检索数据,根据缓存获取对应值。 删除缓存数据:cache.delete(key)方法用于删除指定缓存对应数据。...视图缓存(View Caching) 视图缓存是在视图函数或类视图中缓存整个页面或视图输出。这可以通过Django缓存框架来实现。...类视图:可以在类视图中使用cache_control属性来缓存输出。...手动失效:在数据更新时手动删除相关缓存,确保下次访问时重新数据库获取最新数据。 基于事件驱动:通过监听数据变更事件,当数据发生变化时自动更新或删除相关缓存。 2....Cache Refresh操作:当缓存数据过期或需要更新时,可以通过刷新操作来更新缓存数据,例如重新数据库获取最新数据并更新缓存。 3.

300

基于类通用视图:ListView 和 DetailView

对处理首页视图函数来说,虽然其处理对象一个是文章,另一个是帖子,但是其处理过程是非常类似的。首先是数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...将 index 视图函数改写为类视图 针对这种数据库中获取某个模型列表数据(比如这里 Post 列表)视图,Django 专门提供了一个 ListView 类视图。...不过注意一点是,在类视图中 URL 捕获命名组参数值保存在实例 kwargs 属性(是一个字典)里,非命名组参数值保存在实例 args 属性(是一个列表)里。...DetailView 除了数据库中获取模型列表数据数据库获取模型一条记录数据也是常见需求。比如查看某篇文章详情,就是数据库中获取这篇文章记录然后渲染模板。...post 传递给模板(DetailView 已经帮我们完成), # 还要把评论表单、post 下评论列表传递给模板

2.6K70

django select_related和prefetch_related用法与区别

今天我们再来学习两个非常重要查询方法select_related和prefetch_related方法,看看如何使用它们避免不必要数据库查询。高手过招,只差分毫。...当我们在模板中调用{{ article.category.name }} 和 {{ tag.name }}显示category和tags名字时,Django还需要重新查询blog_category和blog_tag...for循环每运行一次,django都要对数据库进行一次查询,造成了极大资源浪费。为什么我们不能再第一次获取文章列表同时就获取每篇文章相关联category和tags对象信息呢?...select_related方法 select_related将会根据关系(注意: 仅限单对单和单对多关系),在执行查询语句时候通过创建一条包含SQL inner join操作SELECT语句来一次性获得主对象及相关对象信息...对与单对单或单对多ForeignKey字段,使用select_related方法 对于多对多字段和反向外关系,使用prefetch_related方法 两种方法均支持双下划线指定需要查询关联对象字段名

1.3K20
领券