史上最全Django知识总结!神级程序员强推:掌握此文就掌握Django

一、视图函数(views.py中的函数):第一个参数类型是HttpRequest对象,返回值是HttpResponse对象

二、URLconf(urls.py):绑定视图函数和URL (urlpatterns只有一个空串时django显示欢迎页面)

(r'^time/plus/(d)/$', hours_ahead),urls.py用圆括号从正则中提取数据;

def hours_ahead(request, offset):...,views.py视图函数的第二个参数是从url中提取的字符串

三、调试,在视图的任何位置插入一个assert False来触发django的出错页

给大家推荐一个群:Python学习: 五八八零九零九四二,每天分享Python直播学习,群里有各种教程和PDF文件,已经欢迎的安装,欢迎你的加入。

四、模板引擎

1.模板是一个文本,用于分离文档的表现形式和内容。模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)。模板通常用于产生HTML,但是 Django 的模板也能产生任何基于文本格式的文档。大家可以加下,里面遍布了全国各地的学习者!为大家提供一个交流平台,不管平时有碰到什么BUG或者学习过程中卡壳,找不到人替你解决?那么就进来吧,里面热心的小伙伴还是非常多的,管理也是挺好的,有什么问题,他如果有时间都能给大家解决,我觉得是一个非常不错的交流平台,没事也可以和大家扯扯公司的事学校发生的趣事,群文件已经上传了好多G的资料,PDF,视频 安装工具,安装教程都是有的,为了大家的学习能更进一步!也为了大家能愉快的交流,讨论学术问题!所以你还在等什么呢?好了马上给大家带来正文!

2.用两个大括号括起来的文字(例如{{ person_name }} )称为变量(variable) 。这意味着将按照给定的名字插入变量的值。

3.被大括号和百分号包围的文本(例如 {% if ordered_warranty %} )是 模板标签(template tag) 。标签(tag)定义比较明确,即:仅通知模板系统完成某些工作的标签。

4.filter 过滤器,它是一种最便捷的转换变量输出格式的方式。如这个例子中的{},我们将变量ship_date 传递给date 过滤器,同时指定参数”F j,Y”。date过滤器根据参数进行格式输出。

5.模板使用

1>可以用原始的模板代码字符串创建一个Template 对象,Django 同样支持用指定模板文件路径的方式来创建Template 对象;

2>调用模板对象的render 方法,并且传入一套变量context。它将返回一个基于模板的展现字符串,模板中的变量和标签会被context 值替换。

python manage.py shell 进入交互模式

补充:

1.setting.py中INSTALLED_APPS 告诉 Django 项目哪些 app 处于激活状态,可以激活对应app下面的模型

2.在app的目录下添加management/commands目录,django就会自动的为commands目录下的每个模块自动注册manage.py命令,可以用python manage.py command_name来调用,具体命令的文件编写格式如下:

这个项目做完以后推出进阶篇.....

1.django模板的html自动转义

在django里默认情况下,每一个模板自动转意每一个变量标签的输出。 尤其是这五个字符。

> 被转意为 >

' (single quote) 被转意为 '

" (double quote) 被转意为 "

& 被转意为 &

另外,我强调一下这个行为默认是开启的。 如果你正在使用django的模板系统,那么你是被保护的。

关闭自动转义

对于单独变量:

$ ./manage.py syncdb --database=users

syncdb会把所有的model都同步到users数据库,所以不一定是我们想要的(可以用router控制入库到user数据库的app)

syncdb也会检索对应app的/sql/.sql(modelname小写),并会在正常syncdb后执行这些sql语句

3.数据库路由 database router

1>setting.py的DATABASES加入数据库配置就不说了

2>创建myapp/myrouter.py文件,并写入如下代码(每个函数的具体含义可看官网说明)

4.关于自增和联合索引

“很容易明白,第一个参数就直接添入要使用的view方法,第二个args里边顺序填入方法的参数,(extra_context也从这里传入)然后剩下的就全部交给django去完成拉。于是我们就可以放心的修改url.py里的url配置,不

必再担心有什么地方没修改网站出错啦”

说白了,reverse()就是屌丝views的逆袭,从views里面的方法反解url,该函数返回的字符串就是一个url串。用它的好处是修改urls.py里面的url可以不用修改views文件中的HttpResponseRedirect()参数。

12.djang多进程和多线程的问题

django单进程多线程:每个线程的数据库操作会用不同的连接,如果某进程有60个线程,每个线程都有对同一个数据库的操作,那么该进程会有60个对该数据库的连接(小心mysql最大连接数达到上限)。就测试结果来看,数据库操作结束后(线程还没退出)几分钟,连接会自动断开(说个跟本话题无关的,tmpThread.setDaemon(True)考虑清楚再用,今天线程抛异常就跟这个有关Exception in thread Thread-6 (most likely raised during interpreter shutdown))

django多进程:如果在某个django的进程里面用multiprocessing创建新的进程,则子进程会继承父进程的数据库连接socket,那么父子进程同时做数据库操作时会出错(数据库socket连接会抛出异常“数据库已不在”/"查询过程中出错")

如果在某个django的进程里面用os.popen()或者subprocess.Popen()创建新的django进程(比如启动一个django的command),则,子进程虽然会继承父进程的数据库连接socket,但也会自己构建属于自己的数据库连接(跟从bash下启动进程一样嘛,可以预料到的),不会有上述问题(顺便说一句,subprocess才是正道,什么os.popen()、popen2.*已不是官方倡导的多进程用法;multiprocessing倒不至于被人遗弃,因为它是类似于多线程threading模块的多进程模块,和前面的那些多进程模块适用性不一样)

16.或者,OR语法

select * from xx where a = 1 or a = 2;

在django中的实现:

rts = XX.objects.filter(a = 1) | XX.objects.filter(a = 2)

或者

rts = XX.objects.filter(Q(a = 1) | Q(a = 2))

或者| 并且& 都可以用

本文来自企鹅号 - 我爱Python媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JavaEdge

Java线程状态NEW状态RUNNABLE状态BLOCKED状态等待TIMED _WAITINGTERM_INATED等待队列锁池状态几个方法的比较疑问

NEW状态 实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了初始状态 英文翻译过来是线程还是没有开始执行。 首...

52311
来自专栏蘑菇先生的技术笔记

探索c#之storm的TimeCacheMap

2257
来自专栏搞前端的李蚊子

微信返回码说明

返回码说明 返回码    说明 -1     系统繁忙 0     请求成功 40001     验证失败 40002     不合法的凭证类型 40003  ...

3836
来自专栏Python

python select模块详解

要理解select.select模块其实主要就是要理解它的参数, 以及其三个返回值。 select()方法接收并监控3个通信列表, 第一个是所有的输入的data...

4996
来自专栏九彩拼盘的叨叨叨

写爬小说的爬虫的一些心得

小说网站的页面内容编码用的 GBK,如果不做处理,中文内容会是乱码。解决方案是用 iconv-lite 来对内容用 GBK 的方式来解码。大概的写法:

1383
来自专栏Vamei实验室

被解放的姜戈04 各取所需

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们在庄园疑云中讲到了服务器上的数据。当...

2015
来自专栏Django中文社区

博客文章详情页

首页展示的是所有文章的列表,当用户看到感兴趣的文章时,他点击文章的标题或者继续阅读的按钮,应该跳转到文章的详情页面来阅读文章的详细内容。现在让我们来开发博客的详...

4457
来自专栏青玉伏案

Objective-C中的Block回调模式

        在前面的博客中提到了Block的概念和使用方法,个人感觉Block最爽的用法莫过于在回调时用block。感觉比委托回调和目标方法回调用着要顺手,...

2705
来自专栏Coco的专栏

【前端安全】JavaScript防http劫持与XSS

1K4
来自专栏韦弦的偶尔分享

微信小程序实时搜索并高亮关键字

这是一个我项目中的截图,但是数据结构又略微有点复杂,不好演示,所以单独又写了一个demo,数据来自干活集中营

4052

扫码关注云+社区

领取腾讯云代金券