Django提供一个管理数据库的app,即django.contrib.admin。这是Django最方便的功能之一。通过该app,我们可以直接经由web页面,来管理我们的数据库。...这个app通常已经预装好,你可以在mysite/settings.py中的INSTALLED_APPS看到它。 ? “这庄园里的事情,都逃不过我的眼睛”,管家放下账本,洋洋得意。...Inline显示 上面的Contact是Tag的外部键,所以有外部参考的关系。而在默认的页面显示中,将两者分离开来,无法体现出两者的从属关系。...“但我也不是好惹的。” 列表页的显示 在Contact输入数条记录后,Contact的列表页看起来如下: ?...总结 Django的管理页面有很丰富的数据库管理功能,并可以自定义显示方式,是非常值得使用的工具。 “谁,也逃不出我的眼睛!”
向昆汀的致敬,“被解放的姜戈” Django意外的和昆汀的电影重名。这大大提高了Django的知名度。另外利用电影,宣传了这个奇怪的词的发音。 下面是姜戈的初体验。 ...虽然有一个能跑的服务器,但什么内容都没有。 “赏金?猎人?” 姜戈满脸困惑。 第一个网页 在http协议中可以看到,网络服务器是“请求-回应”的工作模式。...姜戈接过枪,一枪射出去。“天哪!” 德国人惊呆了。 增加app 一个网站可能有多个功能。我们可以在Django下,以app为单位,模块化的管理,而不是将所有的东西都丢到一个文件夹中。...我们将在以后讲解它们的用途。 姜戈看到曾经的工头们,眼中充满怒火。 增加APP页面 我们下面为APP增加首页。我们之前是在mysite/urls.py中设置的URL访问对象。依然采用类似的方式设置。...姜戈大吼。 总结 可以看到,Django的创建过程非常简单。但这只是初次尝试Django。为了创建一个完整功能的网站,还需要调用Django许多其它的功能。 姜戈的解放,才刚刚开始。
上一回说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App。这一回,我们要走入糖果庄园。 数据库是一所大庄园,藏着各种宝贝。一个没有数据库的网站,所能提供的功能会非常有限。...为了找到心爱的人,姜戈决定一探这神秘的糖果庄园。 连接数据库 Django为多种数据库后台提供了统一的调用API。根据需求不同,Django可以选择不同的数据库后台。MySQL算是最常用的数据库。...姜戈略一迟疑,旋即走入了庄园的大门。 创立模型 MySQL是关系型数据库。但在Django的帮助下,我们不用直接编写SQL语句。Django将关系型的表(table)转换成为一个类(class)。...这富丽堂皇的别墅中,姜戈隐隐闻到凶险的味道。 显示数据 数据模型虽然建立了,但还没有数据输入。为了简便,我们手动添加记录。打开MySQL命令行,并切换到相应数据库。...姜戈强自镇定,嘴角忍不住颤动。 总结 Django使用类和对象接口,来操纵底层的数据库。 有了数据库,就有了站点内容的大本营。 姜戈,风雨欲来。
我们先会看到传统的表格提交,然后了解Django的表格对象。 ? “我可不做赔本的买卖”,庄主对姜戈说。 html表格 HTTP协议以“请求-回复”的方式工作。客户发送请求时,可以在请求中附加数据。...姜戈舔舔嘴唇,“这就是你最好的决斗士?我觉得它们不值。” POST方法 上面我们使用了GET方法。视图显示和请求处理分成两个函数处理。 提交数据时更常用POST方法。...这是Django提供的防止伪装提交请求的功能。POST方法提交的表格,必须有此标签。...,我们调用Character类创建新的对象,并让该对象的属性name等于用户提交的字符串。...“他只是勉强够看罢了”,姜戈摇摇头,德国人也赶快跟着摇摇头。 表格对象 客户提交数据后,服务器往往需要对数据做一些处理。比如检验数据,看是否符合预期的长度和数据类型。
在这样的一种回复生成过程中,我们实际上将数据和视图的格式混合了到上面的字符串中。看似方便,却为我们的管理带来困难。想像一个成熟的网站,其显示格式会有许多重复的地方。...Django中自带的模板系统,可以将视图格式分离出来,作为模板使用。这样,不但视图可以容易修改,程序也会显得美观大方。 ? “她是我心中最美的人”,姜戈对德国人说。...这就是我们的数据。 context中元素的键值为'label',正对应刚才的“陌生人”的名字。这样,该context中的‘label’元素值,就会填上模板里的坑,构成一个完整的http回复。...循环与选择 Django实际上提供了丰富的模板语言,可以在模板内部有限度的编程,从而更方便的编写视图和传送数据。 我们下面体验一下最常见的循环与选择。...姜戈静静的说,“我懂得他的感受。”
这是一个实验性的web服务器,不适用于正常的站点运行。我们需要一个可以稳定而持续的服务器。这个服务器负责监听http端口,将收到的请求交给Django处理,将Django的回复发还给客户端。...姜戈大喝一声,掉转马头狂奔。 安装 首先需要安装apache2和mod_wsgi。...想起逝去的德国人,姜戈心中一痛。 静态文件 Django的主要功能是动态的生成HTTP回复。很多媒体文件是静态存储的,如.js文件,.css文件和图片文件。这些文件变动的频率较小。...姜戈想到爱人身陷囹圄,忧伤顿时化为愤怒。 其它 云平台或者服务器的部署是一个大的课题,这里无法深入到所有的细节。幸运的是,在网上有丰富的资料。你可以根据自己的平台和问题,搜索相应的资料。...马蹄声疾,电光火石之间,姜戈已经把护园家丁撂倒在地。 总结 apache + mod_wsgi 静态文件 “你在外面等我,我要跟他们算总帐”,姜戈对爱人说。
通过用户验证,我们可以根据用户的身份,提供不同的服务。 一个Web应用的用户验证是它的基本组成部分。我们在使用一个应用时,总是从“登录”开始,到“登出”结束。...HTTP协议是无状态的,但我们可以利用储存在客户端的cookie或者储存在服务器的session来记录用户的访问。 Django有管理用户的模块,即django.contrib.auth。...Django中还有其它的装饰器,用于修饰处理函数。相应的http回复,只能被特殊的用户看到。比如user_passes_test,允许的用户必须满足特定标准,而这一标准是可以用户自定义的。...这是一种简便的方法,但并不能用于一般的用户注册的情境。我们需要提供让用户自主注册的功能。这可以让站外用户提交自己的信息,生成自己的账户,并开始作为登陆用户使用网站。...两杆枪,一支指着德国人,一支指着姜戈。
之前在单机上实现了一个Django服务器(被解放的姜戈07 马不停蹄),现在我们可以把这个服务器推上一个云平台。 image.png 看着复仇的火焰燃烧,姜戈露出得意的笑容。...此外,新建用户没有定义默认的SHELL。可以设定为最常用的BASH。...:被解放的姜戈07 马不停蹄 运行Django服务器 利用sftp或scp把Django服务器的项目代码放上云平台。.../site-packages') 再按照被解放的姜戈07 马不停蹄配置好对应的数据库和Apache服务器,就可以通过IP地址来访问服务器了。...姜戈和自己的爱人,骑着马远走高飞。
记得以前写过一篇《给博客添加网络电视页面》的文章,后来张戈将音乐电台和网络电视综合了一下, 成为了现在的在线影音。...此页面用到了 iframe 框架,所以张戈用 js 封装处理了下,避免不利于 SEO 的情况(如何封装的?) ? ? 近期,有朋友私信或留言给张戈,想要我分享一下张戈博客的在线影音的源码。...其实,我最开始是从在线工具那看到的,感觉很不错!就拿来综合修改了一下,结合了原版的在线电视和在线音乐盒,做成了在线影音。现在,张戈就把来自网络的好东西再回馈给网络上有需要的人!...一、傻瓜式通用版(适合所有建站程序) 其实,这个版本就是用浏览器打开张戈博客-在线影音后的源代码,稍微有点网页基础的孩纸就可以自助获取了!...现在,张戈把 html 代码和相关文件都打包,方便不太懂代码的站长筒子们。 代码如下: <!
找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?...图来自网络 因为这道题目规定了不要用到额外的空间,也就是必须要在O(N)的空间复杂度内完成,所以这里使用一个字典来存储统计的结果。 1 )定义一个字空典。...本名皮特罗·姜戈·马克西莫夫(Pietro Django Maximoff),他的起源故事版本众多,漫画中最新剧情是由吉普赛人姜戈和玛丽所生,小时候和双胞胎姐姐绯红女巫(比快银早出生30秒)一起被高进化者...(High Evolutionary)绑架当做实验对象,从而获得了高速移动的能力,后来二人被骗,听信了自己是万磁王的孩子,母亲抛弃了他们,接生的牛头女士把他们交给了吉普赛人夫妇的这个说法。...原著的快银十分的强悍,但是在复仇者电影系列中,快银从登场到领盒饭快得有点出乎意料,可能由于他做什么事情都很快导致的o.o,快银在《奥创纪元》中为了拯救鹰眼和一个小男孩被机枪扫射而死。
作者:陈大鱼头 github:KRISACHAN 不知道各位童鞋有木有看过 《等待戈多》 这部出名的荒诞戏剧 。其剧情大概就是 戈戈 与 狄狄 等待 戈多 的过程中发生的一些琐事,一共两幕。...等了这么多年,也不知道 戈多 现在在哪,赴约了没有。 如果 戈戈 与 狄狄 像我们监听页面元素变化那样监听戈多的动态,是不是就不会出现空欢喜的状态?是不是就不用等得那么辛苦?...,然后当戈多移动到集合地点附近时,等待戈多的俩哥们就可以去赴约了。...如何监听戈多的位置? 下面我们就通过实际的代码来监听戈多的位置变化。 效果还是如同上图。...不过戈戈 与 狄狄也等待戈多快70年了,就像痴情的女生等待远走的渣男一样,就是不来好歹也给个音信啊。 戈多心想:“我不过是迷路了么,嘤嘤嘤” ?
_request.GET是一样的,因为request没有GET属性,所以它就会访问_request中的GET属性,最后我们查看打印结果,如下: QueryDict: {'a': ['1']}> QueryDict...: {'a': ['1']}> QueryDict: {'a': ['1']}> 同样的,POST请求也是如此,我们在视图中添加POST的请求方式,如下: def post(self, request...: {'a': ['1']}> QueryDict: {'a': ['1']}> QueryDict: {'a': ['1']}> 可以看到multipart/form-data这种请求方式,都能打印出来...接着我们使用application/x-www-form-urlencoded提交请求数据,并请求API QueryDict: {'a': ['1']}> QueryDict: {'a'.../json提交请求数据,并请求API 可以看到application/json这种请求方式,只有request.data能打印出来 QueryDict: {}> QueryDict: {}
Django 读作姜戈,第一个 D 不发音,与电影《被解救的姜戈》的姜戈除了读音一样,没有其他半毛钱关系。Django 是一个优秀的 Web 框架,用 Python 编写,是非常流行的全栈框架。...,在开发的过程中他们发现很多共性的代码可以提取出来复用,从而减少工作量,提高效率,慢慢的就开发出一个可以填空的 Web 框架,这个框架被越来越多的人使用,于是在 2005 年的夏天,Django 源码开放...,一度成为非常流程的框架,有着数以万计的用户和贡献者,在世界广泛传播的完善开源项目。...这就是为什么在模型类中同时定义了模型所代表的数据和有关该模型的信息(其可读名称,默认排序等选项)的原因;了解给定模型所需的所有信息都应存储在模型中。...这也是 select_related() QuerySet 方法存在的原因,对于常见的查询相关对象的情形,它是可选的性能提升器。
QueryDict 在django的 HttpRequest 对象中,属性 GET 和 POST 得到的都是 django.http.QueryDict 所创建的实例,这是django自定义的一个类似字典的类...而 QueryDict 就可以用来处理一个键带多个值的情况。 (1)....QueryDict.get(key, [default]) QueryDict.get(key, [default]) 返回 key 的值。如果key 具有多个值,只返回最后(最新)的值。...QueryDict.getlist(key, [default]) QueryDict.getlist(key, [default]) 返回 key 的值。...a=1&b=2 的字符串叫做查询字符串,可以用过 request.GET 获取, request.GET 返回值是 QueryDict 对象。 url /query?
搭乘飞机的旅客人数,以及在天空中飞行的飞机数量皆不断成长,科学家 Peter Vincent 想要减少飞机起飞时所产生的排放量。...身为伦敦帝国学院航空学系助理教授,同时也是英国工程暨物理科学研究委员会会员的 Vincent 说。 重量较轻的飞机排放出较少量的温室气体,而许多设计师将注意力集中在减少喷射引擎涡轮机的重量上。...排放量有可能会增加三倍 这项研究使得 Vincent 及其团队入围被视为“超级计算机界诺贝尔奖”之 ACM 戈登贝尔奖(Gordon Bell Prize)决选的六支队伍。...Vincent 表示航空业必须在成长之际发展出更环保的飞机。“这不只是产生出多少污染物的问题,而是一项关于成长及永续性的议题。”他说。...这项使用 GPU 加速处理的模拟内容显示五具喷射引 擎低压涡轮叶片上的气流。 然而联合国国际气候变迁委员会指出,在“一如往常”的情况下,2035年时的排放量会增加三倍。
QueryDict 在HttpRequest对象中,GET和POST属性是django.http的实例。QueryDict类。 QueryDict是一个用户定义的类,类似于字典。...它用于处理单个键对应多个值的情况。 QueryDict实现所有标准字典方法。...它还包括一些独特的方法: >>> q = QueryDict('a=1') >>> q = q.copy() # to make it mutable >>> q.update({'a': '2'}...csrf的全称是跨站点请求伪造。这是Django提供的防止伪装提交请求的功能。POST方法提交的表单必须具有此标签。...__version__) 通常,单击报告错误的代码文件的路径信息将自动跳转到错误文件中的行数。此时,我们将注释掉错误文件中的行数。
' encoding:一个字符串,表示提交的数据的编码方式 如果为None则表示使用浏览器的默认设置,一般为utf-8 这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的...” 方法 is_ajax():如果请求是通过XMLHttpRequest发起的,则返回True QueryDict对象 定义在django.http.QueryDict request对象的属性GET、...POST都是QueryDict类型的对象 与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况 方法get():根据键获取值 只能获取键的一个值 如果一个键同时拥有多个值...('键',default) GET属性 QueryDict类型的对象 包含get请求方式的所有参数 与url请求地址中的参数对应,位于?... a:{% for item in a %} {{ item }} {% endfor %} b:{{ b }} POST属性 QueryDict
修改的内容 1.将原来生成的代码提取到函数fetch,并对代码美化,使其遵守pep8 2.添加文件头,使其在Python2中也可以使用 3.将生成的python写入文件。文件名使用url的一部分。...return reprWithVariable(value, false) } function getQueryDict(request) { let queryDict = 'params...+= ' (' + repr(paramName) + ', ' + paramValue + ' ),\n' } queryDict += ' )\n' return...if (request.query) { queryDict = getQueryDict(request) } let dataString let...生成代码失败:${error}`); } else { console.log(`生成Python代码成功,文件名${filename}.py`) } }) } //curl的代码写这里
,返回一个queryDict对象 HttpRequest.POST 获取表单提交的数据,如果是通过POST请求提交的其它非表单数据,可以使用HttpRequest.Body获取;使用时可以通过if request.method...self.GET = QueryDict(mutable=True) self.POST = QueryDict(mutable=True) self.COOKIES =..._files = QueryDict(encoding=self....对象 queryDict类是python字典的子类,具有字典的所有方法,它放在django.http.QueryDict中。...=True) # print(query) # 根据键生成新的QueryDict query_new = QueryDict.fromkeys(query, value="这个大傻子") # print