Django 在单个页面中使用具有不同URL的多个POST请求
我正在尝试为每个待办事项创建一个带有添加/删除和完成按钮的待办事项列表。我使用了多种表单和POST请求来实现它。是否有更好的解决方案来实现这一点 当前问题-添加后页面刷新将相同项目添加到列表中,每次请求后页面刷新 views.pyDjango 在单个页面中使用具有不同URL的多个POST请求,django,django-forms,django-views,Django,Django Forms,Django Views,我正在尝试为每个待办事项创建一个带有添加/删除和完成按钮的待办事项列表。我使用了多种表单和POST请求来实现它。是否有更好的解决方案来实现这一点 当前问题-添加后页面刷新将相同项目添加到列表中,每次请求后页面刷新 views.py from django.shortcuts import render, redirect from .models import * from .forms import ListForm # Create your views here. def homePag
from django.shortcuts import render, redirect
from .models import *
from .forms import ListForm
# Create your views here.
def homePage(request):
list = List.objects.all()
form = ListForm()
if request.method == 'POST':
form = ListForm(request.POST)
if form.is_valid():
form.save()
context = {'list': list, 'form': form}
return render(request,'todoList/home.html',context)
def deleteList(request,pk):
list = List.objects.get(id=pk)
if request.method == 'POST':
list.delete()
return redirect('/')
def completed(request,pk):
list = List.objects.get(id=pk)
if request.method == 'POST':
print(list.completed)
if list.completed == False:
list.completed = True
else:
list.completed = False
list.save()
return redirect('/')
Html
待办事项列表
{列表%中的listItem为%1}
{%csrf_令牌%}
{{listItem}}
{{listItem.completed}
{{listItem.date_added}}
删除
{%csrf_令牌%}
完整的
{%endfor%}
{%csrf_令牌%}
{{form}}
添加
url.py
from django.urls import path
from . import views
urlpatterns = [
path('',views.homePage, name='home'),
path('delete_list/<int:pk>/',views.deleteList, name='delete_list'),
path('completed_list/<int:pk>/',views.completed, name='completed'),
]
从django.url导入路径
从…起导入视图
URL模式=[
路径(“”,views.homePage,name='home'),
路径('delete_-list/',views.deleteList,name='delete_-list'),
路径('completed_list/',views.completed,name='completed'),
]
谢谢大家!
当前问题-添加后页面刷新将相同项目添加到列表中,每次请求后页面刷新
如果希望避免每次操作后页面刷新,那么必须从Javascript发送AJAX请求,并在Django中创建一些AJAX视图
看看这篇文章:我找到了这篇文章,这可能正是你要找的
from django.urls import path
from . import views
urlpatterns = [
path('',views.homePage, name='home'),
path('delete_list/<int:pk>/',views.deleteList, name='delete_list'),
path('completed_list/<int:pk>/',views.completed, name='completed'),
]