模型类和数据库有关系

2020-03-06  本文已影响0人  Ancestor楠

模型类和数据库有关系

class 类名:

xxx =

xxx1 =

通过一种手段 把类名 当做表名、 把这个属性当做字段名字

这个手段叫ORM

O :object  对象

R: relation 关系

M: mapping 映射

ORM的作用就是把类转成SQL语句、可以把SQL语句转成类

减少开发时间

CharField 对应到数据库的字符串

IntegerField 对应到数据库的整数

django 有个数据库 sqlite

sqlite是小型关系数据库

迁移由两步完成:

1)python manage.py makemigrations 生成迁移文件:

2)python manage.py migrate 迁移

要把迁移文件生成数据库表

可能出现错误:No changes detected 没有可生成的东西

1、看下模型类写没写

2、看下应用是否注册

每个应用文件事先都要注册应用

会生成个迁移文件0001_initial.py 迁移文件尽量不要删也不要改

模型类自带主键---上图的id那一行

默认的表名 应用名+模型类名字转小写

默认的表名 应用名+模型类名字转小写  ,下面的都是自带的

python manage.py shell

创建完记得保存

这个save方法相当于把这个数据执行了insert

创建完记得保存,这个save方法相当于把这个数据执行了insert

查询: select 

Hero.objects.all()相当于 select * from xxxx

Hero.objects.filter(id=1) 相当于 select * from xxx where id =1

更新、修改

·

删除

视图view

处理业务逻辑的

写视图的时候,千万不要忘记写路由

python manage.py runserver 8001  运行起来

效果:

templates模板

写模板的时候千万不要忘记注册模板

在wangzhe文件夹下手动创建templates文件夹 写模板的时候千万不要忘记注册模板

浏览器--->路由---->视图---->模型--->模板(模板语言)

最后ok

模板语言把数据解析出来

多个数据要循环遍历

取值用大括号{}

<ul>

{%for hero in heros %}

<li>{{hero.name }}</li>

{%endfor %}

</ul>

给技能表添加数据:

因为没有匹配的路由

解决404错误:

<int:id>--转换器--告诉浏览器传的是数字 视图v处理业务请求,路由多了个id参数,视图show也要把id参数补上

视图:

        def show(request,id):
                hero=Hero.objects.filter(id=id).first()

                if not hero:

                     raise Http404()#抛出异常

                else:

                        #一查多

                        kills = hero.kill_set.all()#kills = Kill.objects.filter(hero_id=id).all()

                        return render(request,'Kills.html',locals())

上一篇 下一篇

猜你喜欢

热点阅读