django - 如何使用 Django 表从 HTML 表单中选择、插入、更新、删除 MySQL 数据库中的数据
问题描述
解释如何使用 Django 表从 HTML 表单中选择、插入、更新、删除 MySQL 数据库中的数据提前谢谢
解决方案
在 Django 中,我们可以在视图中执行查询
模型:
class Todo(models.Model):
name = models.CharField(max_length=255, null=True, blank=True)
description = models.TextField(null=True, blank=True)
查询:
## SELECT query
# SELECT * FROM Todo;
todos = Todo.objects.all()
## INSERT query
# INSERT INTO Todo (name, description)
VALUES ("chandu", "something here");
new_todo = Todo.objects.create(name="chandu", description="something here")
new_todo.save() # save method is like as commit
## UPDATE query
# UPDATE Todo
SET name = "new_name", description = "new_description"
WHERE id = id;
todo = Todo.objects.get(id=id) # First we need to get the record from db
todo.name = new_title
todo.description = new_description
todo.save()
## DELETE query
# DELETE FROM Todo
WHERE id = id;
todo = Todo.objects.get(id=id) # First we need to get the record from db
todo.delete()
意见:
from django.shortcuts import redirect, render
from django.contrib import messages
from .models import Todo
def create_todo(request):
name = request.POST.get('name', None)
description = request.POST.get('description', None)
if name and description:
new_todo = Todo.objects.create(name="chandu", description="something here")
new_todo.save()
messages.success(request, "Todo created successfully")
return redirect('/todo-list') # http:127.0.0.1:8000/todo-list
else:
messages.error(request, "Please provide name/ description")
return render(request, template_name='todo_form.html')
def list_todo(request):
todos = Todo.objects.all()
return render(request, template_name='todo_list.html', todos=todos)
def update_todo(request, id):
try:
todo = Todo.objects.get(id=id)
new_name = request.POST.get('new_name', None)
new_description = request.POST.get('new_description', None)
if new_name:
todo.name = new_name
if new_description:
todo.description = new_description
todo.save()
messages.success(request, "Todo updated successfully")
return redirect('/todo-list') # http:127.0.0.1:8000/todo-list
except Todo.DoesNotExist:
messages.success(request, "Todo does not exist with ID %s" % id)
return redirect('/todo-list') # http:127.0.0.1:8000/todo-list
def delete_todo(request, id):
try:
todo = Todo.objects.get(id=id)
todo.delete()
messages.success(request, "Todo deleted successfully")
return redirect('/todo-list') # http:127.0.0.1:8000/todo-list
except Todo.DoesNotExist:
messages.success(request, "Todo does not exist with ID %s" % id)
return redirect('/todo-list') # http:127.0.0.1:8000/todo-list
网址:
from django.urls import path
from .views import create_todo, list_todo, update_todo, delete_todo
urlpatterns = [
path('admin/', admin.site.urls),
...
...
path('todo/create', create_todo),
path('todo/list', list_todo),
path('todo/update/<ind:id>', update_todo),
path('todo/delete/<ind:id>', delete_todo),
]
推荐阅读
- excel - 使用excel-vba将word表中的数据和文本格式导入excel
- neo4j - Neo4J - 当一个节点被删除时,方向关系会发生什么?
- php - 有没有办法按标题内容仅删除特定的产品变体?
- constraints - 如果表具有引用分区,如何启用、禁用约束?
- css - 动态列表元素的选择器问题
- c++ - 点云库,用 g++ 链接库
- salt-stack - Saltstack 从反应堆中排除特定的奴才
- oracle - 发布日期从 1-jan-xx 年至今
- c# - 使用 Newtonsoft 反序列化 JSON,并在值中使用引号
- docker - 是否可以在 2 个 docker-compose.yaml 之间通过 docker-compose 在 docker 网络上卷曲?