Django 第二篇
Posted jingandyuer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 第二篇相关的知识,希望对你有一定的参考价值。
1.路由访问服务器不带斜杠,内部开始找不到路径,
内部会返回一个带斜杠的路由给浏览器,浏览器再次
携带那个带斜杠的路由再次访问服务器,简称自动重定向加斜杠路由。
所有的html文件默认都写在templates文件夹下
所有的静态文件(css,js,前端第三方类库)默认都放在static文件夹下
html页面引入外部资源的方式
cdn
本地
form表单触发提交数据的动作两种方式 1.<input type="submit"> 2.<button></button>
form提交数据的地址如何指定及方式? action属性控制提交的地址 方式: 1.全路径 <form action="http://127.0.0.1:8000/login/"> 2.只写路径后缀 <form action="/login/"> 3.不写 (默认往当前路径提交) form表单默认是get请求
1.request.method:获取提交数据的方式,GET或者POST
request.POST:获取post提交的数据 request.GET :获取GET提交的数据 例如<request.POST: QueryDict: ‘username‘: [‘jason‘], ‘password‘: [‘123‘] > request.POST.get(‘username‘)=jason,想要获取values 中的全部数据用getlist(),value是一个列表,但是get出来确实 一个元素,而且默认取出列表里面的最后一个元素
djangol链接数据库
1.需要修改配置文件,django默认链接自己的db.sqlite3
我们把那个改成mysql,k键全部改成大写。
2.告诉Django用pymysql替换它默认的数据库
方式1,在项目文件夹下面的init或者应用文件下的init
固定写法;
import pymysql
pymysql.install_as_MySQLdb()告诉django用pymysql代替mysqldb连接数据库
orm
1.django的ORM不能主动创建库,要你自己手动创建库,orm会帮你创建表
数据库迁移命令
python3 manage.py makemigrations
将你的数据库变动记录到一个小本本上(并不会帮你创建表)
python3 manage.py migrate
将你的数据库变动正在同步到数据库
PS:每动一次数据库,必须执行这两条命令
新增数据
方法1.
user_obj = models.User.objects.create(name=username,password=password)
方法2.
user_obj = models.User(name=username,password=password)
user_obj.save() # 对象调用save方法保存到数据库
查询数据
user_list = models.User.objects.all() # 获取user表所有的数据
PS:这里的user_list是一个列表,里面是QuerySet对象,可以query
查看SQL语句,只有QuerySet对象才可以点query。
user_obj = models.User.objects.filter(id=edit_id).first()
这是一个数据对象,获得的是一个数据对象列表,可以索引取值
first是取第一个对象,filter当条件不存在的情况下会返回一个空的queryset对象
user_obj = models.User.objects.get(id=edit_id)
get也可以获取数据对象,但查询条件不存在会报错,filter不会报错
获取对象id的获取方式 方式1:利用input隐藏一个标签 <input type="hidden" name="edit_id" value=" user_obj.pk "> 方式2: <form action="/edit/?edit_id= user_obj.pk " method="post">
重定向 可以写别人的网址也可以是自己的路径
return redirect(‘/userlist‘)
return redirect(www.baudu.com)
利用a标签href属性 可以指定页面跳转的路径 href可以写全路径 但是推荐写后缀即可 <a href="/reg/" class="btn btn-success">添加数据</a> # 注意 路径的书写一定要加斜杠
数据删除
models.User.objects.filter(id=1).delete()
# 会将queryset所有的数据对象全部删除
更新数据
方法1
models.User.objects.filter(id=edit_id).update(name=username,password=password)
方法2
user_obj = models.User.objects.filter(id=edit_id).first()
user_obj.name = username
user_obj.save()
推荐使用第一种
对表的操作
增加字段,直接写就行,删除字段直接注释,
ps,只要动了那个class 就要执行两天数据库迁移命令
使得orm映射成功
创建类
1.id字段可以不写,默认帮你创建主键id字段
2.一对多字段的建立,外键建立在多的那一方,
例如;publish=models.ForeignKey(to=‘publish‘)
意思就是将表与publish表关联,publish可以不带引号
但是必须写在关联表的下面,推荐使用带引号
3.多对多外键建立在关联的两张表中随意一张都行,推荐建在
查询频率高的那张表,且多对多字段不会出现在建立表的字段中
而且,数据库里的表会自动帮你补全id,所以不要多此一举
以上是关于Django 第二篇的主要内容,如果未能解决你的问题,请参考以下文章