django补充+ORM

// 关于python的3.6版本,字典默认是有序的

模板:
渲染变量{{}}
深度查询 句点符.(可以取索引,方法(不加括号,只能取不加参数的函数),属性,key,)

过滤器:|+过滤器 --> x|filter_name
x|safe --> 声明前面的变量是安全的,可以渲染
不加safe的时候,他会自动把特殊符号转为html对应的特特殊符号
x|add:number --> 显示x+5的结果
x|date:"时间显示格式" --> 控制时间的显示的形式 "Y-m-d H-i"
x|default:默认值 --> 如果变量为空或者是false的时候显示默认值,否则显示变量值
x|length --> 显示变量的长度
x|filesizeformat --> 显示一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)
x|slice:"start:end" --> 切片,只显示start到end的部分,顾头不顾尾
x|truncatechars:要截断的字符数(后面的引号也算) --> 当变量的长度大于后面设置的数值时,会截断,后面的内容用…代替
x|truncatewords:要截断的字符 --> 当变量的长度大于后面设置的数值时,会截断,后面的内容用…代替

for循环:
{% for i in li %}
{% empty %}
这里放当li没有数据的时候要显示的东西
{% endfor %}

if判断:
{% if 条件 %}
要做的事儿
{% elif %}
要做的事儿
{% else %}
要做的事儿
{% endif %}

{% with a=x %}
{{ a }} a就代表了x,赋值操作
{% endwith %}


后端传变量的时候,直接locals(),但是不建议使用,该视图中的变量都可以使用,但是模板中的变量名要和后端的变量名一样


datetime模块
t = datetime.datetime.now() --> 得到当前时间,是datetime.datetime的对象


{% csrf_token %} --> 中间件
会渲染一个input标签,type是hidden,name=csrfmiddlewaretoken是固定的,value是随机的
校验的时候会校验value是否存在

校验是在wsgi和视图中间进行的

ajax和form表单的post请求区别:
ajax是自己组装数据,form是自动组装数据

post请求(包括js的post请求)会 forbidden
form表单解决办法:
加上{% csrf_token %}
ajax解决方法:
data中加上:csrfmiddlewaretoken:$("[name=csrfmiddlewaretoken]").val()

json-->不同语言之间的数据交互
只要是符合json标准的字符串传输过去,json都是可以识别并反序列化的

继承:
创建母版,{% block xxx %}sss{% endblock xxx%}
创建子模板,{% extends %}(必须放在第一行) {% block xxx %}sss{% endblock xxx%}

{% block xxx %}
{{ block.super }} --> 继承block中的内容,然后夹心的内容
{% endblock xxx%}


models:关于ORM中的东西

ORM映射关系:
Python的类名对应SQL语句的表名
Python的类属性对应SQL语句的表名的字段
Python的类属性的约束对应SQL语句的表名的字段类型

在创建表结构之前要执行:
命令行执行:创建库,用来存放数据
python manage.py makemigrations
python manage.py migrate

INSTALLED_APPS = [要加上自己的app]

类的实例对象-->表中的一条记录

class Student(model.Model):
id = models.AutoField(primary_key=True)
--> id字段名,AutoField:int类型,自增 ,primary_key:主键约束
name = models.CharField(max_length=number)
--> name字段名,CharField:char类型,max_length:长度
DateField --> 日期类型

创建完之后在添加,直接在类里面写,并不会报错,而是直接添加

s = Student()
s.save() 保存到数据库



settings的DATABASES更改配置:如果要把内容写到mysql的数据库中的时候

setting.py中设置以下字段:就可以看到翻译成的sql语句
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level':'DEBUG',
},
}
}  




解释器查找模块路径:除了默认的python环境下的路径,还有启动文件的路径

posted @ 2017-12-06 18:36  chitalu  阅读(56)  评论(0)    收藏  举报