1、配置数据库
打开settings.py 文件,添加如下内容:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'bms',# 要连接的数据库,连接前需要创建好
'USER':'root',# 连接数据库的用户名
'PASSWORD':'root',# 连接数据库的密码
'HOST':'127.0.0.1',# 连接主机,默认本级
'PORT':3306,# 端口 默认3306
}
}
2、创建表
打开应用中的models.py文件,添加如下内容:
class Food(models.Model):
title=models.CharField(max_length=32,default="None")
price=models.DecimalField(max_digits=8,decimal_places=2,default=666)
create_date=models.DateField(default='2019-08-30')
3、在指定数据库中创建表
python manage.py makemigrations
python manage.py migrate
4、新增数据
路由:path('book/add/', views.book_add,name='addBook'),
注意:此处通过添加name的值,下面的方法通过name反向解析(reverse),可获得最新的路由地址。
在form表单中添加 {% csrf_token %} 。
后台代码
新增方法:
方式一:
book_obj=Book.objects.create(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")
方式二:
book_obj=Book(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")
book_obj.save()
5、查询数据
路由:path('book/search/', views.book_search,name="showBooks"),
后台代码:
# 查询图书
def book_search(request):
book_list = Book.objects.all()
# print(book_list)
return render(request, "show_books.html", {"book_list": book_list})
前台代码:
<tbody>
{% for book in book_list %}
<tr>
{# <td>{{ forloop.counter}}</td>#}
<td>{{ book.id }}</td>
<td>{{ book.title }}</td>
<td>{{ book.price }}</td>
<td>{{ book.pub_date|date:"Y-m-d" }}</td>
<td>{{ book.pub_lish }}</td>
<td>
<a href="{% url 'editBook' book.id %}" class="btn btn-warning btn-sm">编辑</a>
<a href="{% url 'delBook' book.id %}" class="btn btn-danger btn-sm">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
6、删除数据
路由:re_path('book/del/(\d+)', views.book_del,name='delBook'),
后台代码:
# 删除图书
def book_del(request, book_id):
Book.objects.filter(id=book_id).delete()
return redirect(reverse("showBooks"))
前台代码:
<a href="{% url 'delBook' book.id %}" class="btn btn-danger btn-sm">删除</a>
7、修改数据
路由:re_path('book/update/(\d+)', views.book_update,name='editBook'),
后台代码:
# 修改图书
def book_update(request, book_id):
# Book.objects.filter(id=book_id).update(title='哪吒闹海')
# return redirect(reverse("books"))
if request.method == "GET":
book = Book.objects.filter(id=book_id)[0]
return render(request, "update_book.html", {"book": book})
else:
# 获取用户修改的数据
title = request.POST.get("title")
price = request.POST.get("price")
pub_date = request.POST.get("pub_date")
pub_lish = request.POST.get("pub_lish")
Book.objects.filter(id=book_id).update(title=title,price=price,pub_date=pub_date,pub_lish=pub_lish)
return redirect(reverse("showBooks"))