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