Django操作数据库增删改查
1、打开pycharm中的Database,建立一个数据库,file行选中我们工程中的db.sqlte3, ok,此时只生成一个表。
2、数据库迁移:控制台输入 python manage.py magrate
此时会生成八个表。
3、生成一个templates文件夹,此下面放html文件。
4、在settings.py中配置文件:
temolates =[{
'DIRS':[
# BASE_DIR 当前工程路径 templatrs就是模板路径 ,作用是拼接此路径
os.path.join(BASE_DIR, 'templates')
]}]
5、在templates创建html文件,用来测试
6、
urls.py>
urlspatten=[
# ‘hello_’是127.0.0.1后缀
path('hello_',views.hello)
]
7、创建数据库
models.py>
# 创建一个数据库,继承模型类
class Book(models.Model):
b_name = models.CharField(max_length=16)
b_ptice = models.FloatField(default=1)
'''
类中套类
class Meta:
# 定义表名
db_table = "表名"
# 排序方法,按属性排名,属性前面加一个负号(-)是倒序
ordering = ["属性",]
'''
8、创建完以后去setting.py中注册,添加文件名:
INSTALLEN_APPS = { 'App',}
9、生成迁移文件,控制台输入:python manage.py makemigrations
10、执行迁移文件:python manage.py migrate
11、查看数据库,可以看到生成一个App_book数据库。
开始干正事...
建立urls连接:
urls.py>
urls={
path('hello',views.hello)
}
获取数据库:
views.py>
def hello(request):
books = Book.objects.all() # 获取数据库表数据
data = { "books": books } # 数据传递
# render 渲染页面
# request 固定写法 “html”渲染模板 context渲染时传递的参数
return render(request,"hello.html",context=data)
在templates中建立hello.html文件
hello.html>
<ul>
{% for book in books %} # 遍历books中的所有元素
<li>{{ book.b_name }}</li> # 获取元素参数,并输出在页面上
{% endfor %} # 结束循环
</ul>
查整个数据库的所有b_name字段属性,并以列表形式输出在html上:
网页>
127.0.0.1:8080/add_book
增删改:
删:
urls>
path('delete_book',views.delete_book)
views.py>
def delete_book(request):
# 获取id为1的数据
book = Book.objects.get(pk=1)
# 删除数据
book.delete()
return Httpresponse("删除成功")
网页>
127.0.0.1:8080/delete_book
增:
urls>
path('add_book',views.add_book)
views.py>
def add_book(request):
# 获取整个数据库结构
book = Book()
# 添加字段属性
book.b_name = "水浒传"
book.b_prite = 99
# 保存
book.save()
return Httpresponse("添加成功")
网页>
127.0.0.1:8080/add_book
改:
urls>
path('modifybook',views.modify_book)
views.py>
def modify_book(request):
# 获取id为1的数据
book = Book.objects.get(pk=1)
# 修改该属性
book.b_name = "西游记"
book.save()
return Httpresponse("修改成功")
网页>
127.0.0.1:8080/modifybook
Model.objects参数:
all--获取所有属性
filter--获取满足条件的数据
exclude--将满足的条件删除
order_by--排序
first--返回查询集合中的第一个对象
last--返回最后一个对象
count--返回查询对象个数
exists--判断路径是否存在