首页 > 解决方案 > 如何使用 Django 表从 HTML 表单中选择、插入、更新、删除 MySQL 数据库中的数据

问题描述

解释如何使用 Django 表从 HTML 表单中选择、插入、更新、删除 MySQL 数据库中的数据提前谢谢

标签: djangodjango-rest-frameworkdjango-formsdjango-templates

解决方案


在 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),
]

推荐阅读