Django 是基于Python 的 web框架,类似于 MVC (Model + View + Controller),MTV 把前后端进行了分离。
M 是Model, 在Django中, Model可以用来初始化对象,并使用MysqlClient 更加简洁的操作数据库。
可以用save() 来存储 , delete()来删除。不用知道原生SQL语句就可以操作。
V 是views,用来写逻辑,app中的urls负责接收访问地址,然后访问地址对通过views找到对应的response函数。
T是template, 基本上就是Html 文件。vewis 里的 HttpResponse、Render。Redirect都可以直接找到对应的html页面并进行渲染。
Model
可以根据以下方法创建类, 每一个属性就会在数据库里作为key存储。
每次创建新的类以后必须要让mange.py makemigrations 然后 migrate。不然不生效。

当需要获取值的时候可以直接实例化类,然后对对象使用方法。
比如: client=carton_cloud_client.objects.all() # 这个是把数据库里所有数据作为对象,返回给client
然后: data=client.values() # 通过values方法,对象就被转化为Django里的 Queryset数据格式。
如果在实例化时,需要查找具体哪个对象,可以在objects后边用get() 或者filter()方法查找满足条件的对象。
person= Person.object.filter(p_age__gt=50).filter(p_age__lt=70)
all()可以切片users=User.objects.all()[2:5]下边不可以负数 也有last 和first()方法
filter()
exclude()
order by()
values() 转换为类字典显示列表
get()这个容易出异常要小心。 get().last() get.first()直接调出最后或者第一个对象。
使用values导出JSON文档
person= Person.objects.all()
person_values=person.values()
print(person_values)
Quick start
创建app
先要开启虚拟环境,shell中输入:
django-admin startproject nameformyproejct
这个时候框架nameformyproejct这个项目就有了,然后拿pycharm打开下一级文件夹(文件夹需要被识别为包文件,pycharm中显示文件夹图标是有个小点的)
python manage.py startapp nameformyapp 这个时候就创建了一个新的app(这个文件夹可以用来处理一类mvc的模板)
然后把setting.py里的设置过一下就好了。
python mange.py runserver 0.0.0.0:8000 就可以启动Django内置的服务器(后边ip和端口可以不写)
浏览器 127.0.0.1:8000就可以看到了
Template
views里边 url(r‘^index/’,include('app.urls',namespace='xxxx')),
template中可以用 {% url ‘app_name : url_name’ param %} ****
app_name:应用命名空间的名称
url_name:链接名
param:地址的参数
模板语法 点方法
a 可以调用字典中的key =》不用加引号
b 可以调用列表里的索引
c 调用对象的属性和方法
forloop。counter用法
<ul>{% for i in client%}
<li> {{forloop.counter}} {{i.c_name}} </li>
{% empty %}
<h3> EMPTY LAAAAAA</h3>
{% endfor %}
使用empty如果为空的时候显示下边的内容也可以是<img>
{{ code|safe}} # views过来的data/context的code可以被渲染为html
{{widthratio 5 1}} 乘除 这里的除是用乘法做的
{% block content %} {% endblock%} 继承
{{block.Super}}不想覆盖 可以继承之前 增量操作
Path如果用 $ 代表必须以dollar符号前的字符结尾
路由中的参数由()获取student/(\d) 然后request后要加变量输入变量
Context=locals()内置函数将局部变量将字典形式打包key是变量名
《li》 《a href=‘/two/student/{{ grade。Id}}’》 {{grade。Name }} 《a》 《li》
{% url 'second:learn'%} second就是namespace /learn 是name 冒号连接 namespace:name
template =》如果需要传值{% url ‘namespace:name ’year= 2020 month=12 day=30 %}
urls => url(r'^update/(?P<year>\d+)/(?P<month>\d)/(?P<day>\d)/',views.update)
views=> 里边就可以用 HttpRespnse(year,month,day)
cookie客户端 存储 键值对 支持过期时间 Session依赖 cookie 、 cookie依赖 浏览器
Request。Session。Flush()要做flush 不然垃圾数据一致会增多
response。set_ _cookie(key, value)
max_age=过期时间 second为单位
set_ _signed_ _cookie
salt=xxx
加密解密都要salt
salt加密
View
request.path request.method request.GET request.META request.POST
request.GET.get('key') request.GET.getlist('key')
响应
HttpResponse
重定向
HttpResponseRedirect(reverse('namespace:name'))
HttpResponseRedirect(reverse(“namespace:name”,args=(value1,value2.。。。。)))
HttpResponseRedirect(reverse(“namespace:name”,kwargs={key1:value1,key2:value2}))
JSON响应
JsonResponse