模型类和数据库有关系
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、看下应用是否注册

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



模型类自带主键---上图的id那一行
默认的表名 应用名+模型类名字转小写

python manage.py shell
创建完记得保存
这个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模板
写模板的时候千万不要忘记注册模板




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

模板语言把数据解析出来
多个数据要循环遍历
取值用大括号{}
<ul>
{%for hero in heros %}
<li>{{hero.name }}</li>
{%endfor %}
</ul>


给技能表添加数据:


解决404错误:




视图:
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())
网友评论