Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在单个页面中使用具有不同URL的多个POST请求_Django_Django Forms_Django Views - Fatal编程技术网

Django 在单个页面中使用具有不同URL的多个POST请求

Django 在单个页面中使用具有不同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

我正在尝试为每个待办事项创建一个带有添加/删除和完成按钮的待办事项列表。我使用了多种表单和POST请求来实现它。是否有更好的解决方案来实现这一点

当前问题-添加后页面刷新将相同项目添加到列表中,每次请求后页面刷新

views.py

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