python框架优化方法,Python Web开发框架:Django-程序员宅基地

技术标签: python框架优化方法  

Django,Tornado和Flask是Python里比较著名的三个Web开发框架,本文我主要介绍Django里最重要的一些基本概念。

总览

下图是从用户输入网址到服务器返回结果的Django流程图。Django里几个重要的概念都涉及到了,接下来我就逐个说说。

3157d3a4d501ef30cff1641374a9948a.png

URLconf

URLconf其实就是起地址定向(或叫配对)的作用,浏览器中输入的不同地址定向到不同的处理逻辑上。

例如,下面定义了网址根目录下的定向方法:

urlpatterns = [

url(r'^polls/', include('polls.urls', namespace='polls')),

url(r'^admin/', include(admin.site.urls)),

]

而下面的代码又定义了polls.urls里的二级目录定向方法:

urlpatterns = [

url(r'^$', views.IndexView.as_view(), name='index'),

url(r'^login/$', views.login, name='login'), ##

url(r'^register/$', views.register, name='register'),

url(r'^logout/$', views.logout, name='logout'),

]

所以,像127.0.0.1:8000/polls/login/就会由指定的视图函数views.login来处理。

模型(Model)

一个模型对应着一个数据库中的表,所以也可以说模型就是数据。

例如,下面定义了一个Django模型:

class Question(models.Model):

question_text = models.CharField(max_length=200)

pub_date = models.DateTimeField('date published')

它对应的数据表如下:

CREATE TABLE "polls_question" (

"id" serial NOT NULL PRIMARY KEY,

"question_text" varchar(200) NOT NULL,

"pub_date" timestamp with time zone NOT NULL

);

模板(Template)

模板可以理解为HTML模板。模板接收一些输入数据,然后最终产生返回给用户的HTML页面。

例如,下面是一个简单的登录模板,里面用到了Django的模板语言:

af183773a13ee2c3ec9e9e1577344f5c.png

模板可以像OOP里的类一样,可重用。具体可参见“extends”说明。

视图(View)

真正处理浏览器请求的是视图。视图接收请求数据,调用其他模块产生结果数据,然后再把结果数据传给模板,由模板最终产生返回给用户的HTML页面。

例如,下面是一个简单的注册视图:

def register(request):

if request.method == 'POST':

form = UserCreationForm(request.POST)

if form.is_valid():

new_user = form.save()

return HttpResponseRedirect("/polls")

else:

form = UserCreationForm()

return render(request, "polls/register.html", {'form': form})

表单(Form)

表单其实不算个重要组件,它只是为了使用方便才被创造出来的。例如我们上面视图里就用到了一个表单UserCreationForm,这个表单帮助创建出简单的注册表单。下面是效果图:

8763215333d38de18c23b94eee7193c3.png

References

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35778603/article/details/116188158

智能推荐

让App进入后台以后长时间在后台运行,并且能正常接收来自前台的消息_有没有让app切到后台一直可以接收到websocket消息的办法,就是一直在后台运行-程序员宅基地

文章浏览阅读5k次。以前关于让app在后台长时间运行是用播放一个无声的音乐来实现,但是这样也智能争取到最多10分钟的后台运行时间,如果是跟蓝牙通信有关的app的话,倒是可以通过配置info.plist文件的键值对来实现app进入后台以后长时间的与前台消息进行交互,其实方法有很多,我们还可以用下面这种方式来实现://在键入以下代码之前,要先导入 框架 NSError *sessionError _有没有让app切到后台一直可以接收到websocket消息的办法,就是一直在后台运行

Flutter pubspec.yaml添加三方库、插件依赖时版本号前面的^作用_flutter插件版本号前面的^是什么意思-程序员宅基地

文章浏览阅读773次,点赞6次,收藏5次。在Flutter项目的文件中,管理依赖是一个常见且重要的任务。依赖的版本号管理决定了项目所使用的第三方库或插件的具体版本,进而影响到应用的功能、稳定性和兼容性。理解版本号前的符号的意义及其对依赖管理的影响是至关重要的。_flutter插件版本号前面的^是什么意思

【Javascript】输入一个数字计算一个数的阶乘_js使用函数完成任意数字阶乘的计算 要求:页面输入任意数字,点击按钮后计算阶乘-程序员宅基地

文章浏览阅读277次。传入参数为3,3*test(2) test(2)又调用了一遍函数,2*test(1) ,test(1)这时调用test()首先判断参数等于1的时候,结果返回他的自身。如果不等于1则返回n*test(n-1)_js使用函数完成任意数字阶乘的计算 要求:页面输入任意数字,点击按钮后计算阶乘

java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署_基于javaweb的考研信息查询系统代码-程序员宅基地

文章浏览阅读86次。java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署。源码地址:springboot基于SpringBoot的实验填报管理系统。springboot生物遗传病的治疗和防范系统。springboot多维分类的知识管理系统。ssm基于B_S景区票务管理系统设计与实现。ssm基于Java的摄影网上预约管理系统。_基于javaweb的考研信息查询系统代码

Qt键盘事件常用按键key值整理_qt键key定义-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏23次。Qt键盘事件常用按键key值整理_qt键key定义

WEB42问-程序员宅基地

文章浏览阅读1.4k次,点赞26次,收藏30次。当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。原理:在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判。拿支付漏洞来说,简单思路有价格修改,支付状态修改,数量最大值溢出,订单。没有回显的情况下,一般编写脚本,进行自动化注入。运行时栈,从而改变程序正常流向,轻则导致程序崩溃,重则系统特权被窃取。如果在包含的过程中有错,比如文件不存在等,则会直接退出,不执行后续语句。从规则层面:编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢。

随便推点

Android Studio 导入系统源码后,一直 scanning files to index 的解决方法_as一直 scanning files to index-程序员宅基地

文章浏览阅读8k次,点赞5次,收藏7次。使用Android studio导入系统源码及跳转依赖配置,见:https://blog.csdn.net/chen930724/article/details/57086699 导入后,遇到AS一直不停地 scanning files to index,在网上搜索,几乎全是这个解决方法:File -> Invalidate Caches / Restart但是,使用后依..._as一直 scanning files to index

微信小程序开发【从0到1~入门篇】_微信小程序开发零基础入门-程序员宅基地

文章浏览阅读3.6w次,点赞66次,收藏740次。1.1 什么是小程序?1.2 小程序可以干什么?同App进行互补,提供同app类似的功能,比app操作更加简洁的轻应用通过扫一扫或者在微信搜索即可下载用户使用频率不高,但又不得不用的功能软件,目前看来小程序是首选连接线上线下。_微信小程序开发零基础入门

java计算机毕业设计教工公寓管理MyBatis+系统+LW文档+源码+调试部署-程序员宅基地

文章浏览阅读149次。ssm基于javaweb的硕士研究生招生考试专业报考查询及学习系统设计与实现。springboot基于Bootstrap框架的读书网站设计与实现。JSP物流仓储仓库管理系统的设计与实现sqlserver。ssm基于Vue.js的网上书城管理系统的设计与实现。jsp会议管理系统的设计与实现sqlserver。ssm基于JEE的人才招聘系统的智能化管理。ssm基于web的智慧医疗平台的设计与实现。ssm基于ssm的酒店管理系统设计与实现。springboot衣橱系统的设计与实现。

unity3D iTween的使用_itween unity 顺时针旋转-程序员宅基地

文章浏览阅读853次。iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 到官网看看 http://itween.pixelplacement.com主要文件有iTween.cs http://code.google.com/p/itween/downloads/list和_itween unity 顺时针旋转

【python运算符】_对于赋值(=)、比较(==,<>,!=,<=,>=,in,not in,is,is not)、布尔(-程序员宅基地

文章浏览阅读566次。和赋值一样,Python也支持链式比较。如0_对于赋值(=)、比较(==,<>,!=,<=,>=,in,not in,is,is not)、布尔(and,or,not)等运

jvm底层-程序员宅基地

文章浏览阅读531次,点赞5次,收藏7次。继承java.lang.ClassLoader类try {//字节数组转class对象,字节数组是class文件读取后最终的字节数组//初始化自定义类加载器 先初始化父类classloader;会把自定义类加载器的父加载器=appClassLoaderMyClassLoader classLoader = new MyClassLoader("读取哪个路径");Class clazz = classLoader.loadClass("类全路径");

推荐文章

热门文章

相关标签