python的学习是需要总结并且记录的,任何的弱类型语言都需要这样,因为不向强类型语言一样,他会自动提示,你只要知道思路,其中的字段或者方法是很容易提示出来的,而弱类型语言很多时候都是不会提示的,所以有时你必须自己书写出精准的单词,当然也可以去查源代码,找到方法名,但是有时候源代码都链接不到.
所以对于弱类型语言,最好的学习方法是记录

一.django 数据库操作

1.django manytomany字段操作

比如老师与班级的关系,一个老师可以给多个班级上课,一个班级也有多个老师,这就是多对多,此时可以在班级的model中定义teachers字段,并设置为manytomany的,

取出数据时,先拿到班级对象,然后取出班级中所有的老师,当然也可以通过老师取出他上课的所有的班级,具体操作如下:

a.第一种方式演示


class Teacher(models.Model):id = models.IntegerField(primary_key=True, verbose_name='id')name = models.CharField(max_length=12, verbose_name='姓名')
class Clazz(models.Model):id = models.IntegerField(primary_key=True, verbose_name='id')name = models.CharField(max_length=25, verbose_name='班级名字')teachers = models.ManyToManyField(Teacher, verbose_name='所有授课老师')#下面演示获取多对多关系的数据teacher = Teacher.objects.first()clazzs = teacher.clazz_set.all() #获取到这个老师教的所有的班级clazz = Clazz.objects.first()teachers = clazz.teachers.all() #获取这个班级所有的老师

b.第二种方式演示

当然在teacher model里面也可以定义clazzs这么一个字段,同样能完成此功能,如果这样的话获取的代码就是如下:


class Teacher(models.Model):id = models.IntegerField(primary_key=True, verbose_name='id')name = models.CharField(max_length=12, verbose_name='姓名')clazzs = models.ManyToManyField(Clazz, verbose_name='老师教授的班级')
class Clazz(models.Model):id = models.IntegerField(primary_key=True, verbose_name='id')name = models.CharField(max_length=25, verbose_name='班级名字')#下面演示获取多对多关系的数据teacher = Teacher.objects.first()clazzs = teacher.clazzs.all() #获取到这个老师教的所有的班级clazz = Clazz.objects.first()teachers = clazz.teacher_set.all() #获取这个班级所有的老师

c.manytomany情况下添加数据并建立关系

以第二种方式做示例:
    teacher = Teacher.objects.first()clazz = Clazz.objects.create(name='五年二班')clazz.save()teacher.courses.add(clazz)teacher.save()

可以看出来还是很方便的,如果自己建立一张表去做查询也是可以实现的,但是操作起来稍微复杂一点,同时也不好保证这两种数据之间的对应关系一定能做好,用这种方式django已经把数据库的冗余数据降到几乎最低了

2.id字段如何写

id字段最好不要写,让系统自动生成,如果要写,就是id = models.AutoFiled(primary_key=True),记住只能用autofield方式,否则不能自增,而id一般要求是不允许重复,自增的,默认情况下就是如此,所以没必要自己再去定义一次,多麻烦一下而已,如果不用自增的字段,保存的时候必须自己制定id的值,否则保存是会出错的,提示id 这一列不能为空

3.id字段不能改成自增

因为有一条数据的id为0,自增时不允许id为0,所以要把这条数据修改一下

4.非空的model字段在model的create时或之前必须指定否则报错

5.去重复查询

    item_ids = user.attendclass_set.values_list('item_id', flat=True).distinct()上面语句中,attendclass的外键为user,通过user拿到所有的user相关的attendclass,然后以item_id这个字段为过滤条件,去重复查询,其中flat=True会让结果直接呈现为list[]形式,如果没有这个将呈现为list[tupple()]形式,同时也可用values方法,这样查询出来是dict形式

6.多条查询

items = Item.objects.filter(id__in=[1,4,6])
表示查询id为1,4,6的三条数据,其中id与in之间是用两个_来连接的

7.其他查询

https://www.cnblogs.com/rinka/p/django_make_queries_anout_built-in_lookups.html

二.settings.py

1.debug配置

在需要测试的机器上建立文件/config/debug/[项目名称],然后在settings文件中配置如下:
这样就不需要在正式环境中修改任何东西即可使用,非常方便

DEBUG = os.path.exists('/config/debug/[项目名称]')
if DEBUG:ALLOWED_HOSTS = ['*']
else:ALLOWED_HOSTS = ['www.[你的域名].cn']

2.新建项目时userPro的model要在同步之前建立

否则会出现依赖错误

3.python3x用pymysql 替代mysqldb的方法

import pymysql

pymysql.install_as_MySQLdb()

4.使用自定义的用户model

AUTH_USER_MODEL = ‘user.UserPro’

三python基础

1.关于datetimefield

http://blog.sina.com.cn/s/blog_9e2e84050101iltd.html

2.参数传递

def aa(a,b,*args,**kwargs):
print(a,b,args,**kwargs)
print(aa(1,2,3,4,5,e=11,f=12))
结果:1 2 (3,4,5) {‘e’:11,’f’:12}
同样可以:
ee={‘e’:11,’f’:12}
aa(**ee)
结果:{‘e’:11,’f’:12}

3.set相关

python 集合set的创建,更改,遍历,元算合并,交集,补集https://blog.csdn.net/u013679490/article/details/54427471
补充一点:

list 中是否包含
a b 为两个list
set(a)>set(b) a是否包含b
set(b)>set(a) b是否包含a
set(a)==set(b) a,b是否相等,但是要求a,b不能是None
a==b 判断a,b是否相等,a,b可以为None
print(list(set(a).intersection(set(b)))) 求交集
print(list(set(a).union(set(b))))求并集

4.高阶函数

廖雪峰教程引用:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317849054170d563b13f0fa4ce6ba1cd86e18103f28000
reduce 依次运算,

三.缓存

http://www.maiziedu.com/wiki/django/open/ 参考此处

python(3.6) django(1.11.1)问题积累相关推荐

  1. 【Python实战】Django建站笔记

    前一段时间,用Django搭建一个报表分析的网站:借此正好整理一下笔记. 1. 安装 python有包管理工具pip,直接cd Python27/Scripts,输入 pip install djan ...

  2. python语言必背代码-Python入门必须知道的11个知识点

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  3. python入门有基础-Python入门必须知道的11个知识点

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言",那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. ...

  4. Python Web框架Django学习(二)

    python web框架Django学习(二) 目录:  三.Django创建APP  四.创建登录页面,实现用户交互,后台管理用户(非数据库方式) ========================= ...

  5. xadmin在Django 1.11中的使用及中英文切换

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com xadmin是一个强大的替代django admin的管理后台,github地址为:https://g ...

  6. atom配置python环境_用Python制作网站Django实操与开发环境配置

    上篇文章简单介绍了Django的基础知识,本篇将进入实际操作部分,包括Django的运行环境.开发环境配置与新建项目等内容.由于篇幅原因,笔者不得不把Demo演示放到下一篇文章,望读者(如果有的话)见 ...

  7. python后台架构Django教程——路由映射urls

    全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng825485697/articl ...

  8. python后台架构Django教程——templates模板

    全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng825485697/articl ...

  9. python后台架构Django教程——视图views渲染

    全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读: http://blog.csdn.net/luanpeng825485697/artic ...

  10. python后台架构Django教程——数据模型Model

    全栈工程师开发手册 (作者:栾鹏) python教程全解 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng82548 ...

最新文章

  1. 全球首辆飞行摩托开卖!飞行高度可达4572米,243万元一辆,你敢开吗?
  2. 试编写一个汇编语言程序,大写---小写 要求对键盘输入的大写字母用小写字母显示出来。
  3. 潘建伟团队再次展示量子计算优越性!“祖冲之号”1.2小时就能完成超算8年计算量...
  4. FineReport中如何自定义登录界面
  5. [Tip]什么是3D 电影 和 4D立体电影?
  6. POJ - 3304 Segments(简单几何)
  7. ansible图形化界面开源_MySQL常见的图形化工具
  8. c#endread怎么打印出来_C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解...
  9. 001-Ansible-参考http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks
  10. JavaScript基础二
  11. android备忘录_苹果备忘录怎样把内容置顶?有置顶功能的备忘录便签
  12. 正确使用日志的10个技巧(转)
  13. ElasticSearch安装分词插件IK
  14. EditPlus3.1工具以及Js插件(打包下载)
  15. MicroStation中关于mke文件的详解
  16. Python操作MyS QL
  17. You can be happy no matter what.
  18. Android类似IOS的果冻效果
  19. 迪士尼机器人芭蕾舞_两个自由度实现惊艳后空翻 迪士尼杂技机器人献拿手好戏...
  20. 为什么聊天软件一般采用UDP协议

热门文章

  1. 华三路由器RIP协议详细配置
  2. 全国哀悼日 网站变灰装(附代码)
  3. 计算机重启是什么原因,电脑自动重启是什么原因以及如何解决【图文教程】
  4. EMC被唯冠科技诉侵权:商标纠纷延宕13年
  5. TCP自时钟/拥塞控制/带宽利用之脉络半景解析
  6. 思维模型 吸引力法则/定律
  7. Qt Creator vs2022 构建 Disney BRDF Explorer 项目
  8. java使用qq群发邮件_java群发发送qq邮件
  9. scoop bucket add 后仍然报错 Couldn‘t find manifest for
  10. 奇虎360历届笔试面试题汇总