Python 单击即可删除对象
我正在尝试制作一个todo应用程序,我有一个带有表格的表单,用户可以在此表单中添加“todo” 我希望能够通过单击按钮从数据库中删除添加的“todo”,而不必将用户重定向到另一个页面,使用Django有什么方法可以做到这一点吗 Views.pyPython 单击即可删除对象,python,django,Python,Django,我正在尝试制作一个todo应用程序,我有一个带有表格的表单,用户可以在此表单中添加“todo” 我希望能够通过单击按钮从数据库中删除添加的“todo”,而不必将用户重定向到另一个页面,使用Django有什么方法可以做到这一点吗 Views.py from django.shortcuts import render from django.utils import timezone from .models import Task from .forms import TaskForm fro
from django.shortcuts import render
from django.utils import timezone
from .models import Task
from .forms import TaskForm
from django.shortcuts import redirect
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.core.urlresolvers import reverse
# Create your views here.
def tasks_list(request):
tasks = Task.objects.filter(created_date__lte=timezone.now()).order_by('created_date')
form = TaskForm()
if request.method == "POST":
form = TaskForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.created_date = timezone.now()
post.save()
#return render(request, 'todo/tasks_list.html', {'tasks': tasks, 'form': form})
return HttpResponseRedirect('/')
else:
form = TaskForm()
return render(request, 'todo/tasks_list.html', {'tasks': tasks, 'form': form})
def post_remove(request, new_id):
post = get_object_or_404(Task, id=new_id)
post.delete()
return redirect('todo.views.tasks_list')
def post_remove(request, pk):
post = get_object_or_404(Task, pk=pk)
post.delete()
return HttpResponseRedirect('/')
url.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.tasks_list, name='tasks_list'),
#url(r'^$', views.tasks_list, name='post_remove'),
]
form.py
from django import forms
from .models import Task
class TaskForm(forms.ModelForm):
title = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Add todo'}), label='')
due_date = forms.DateField(widget=forms.DateInput(attrs={'placeholder': 'Add due date', 'class':'datepicker'}), label='')
class Meta:
model = Task
fields = ('title', 'due_date',)
模板/任务列表.html
{% extends 'todo/base.html' %}
{% load bootstrap %}
{% block content %}
<h1>Todos</h1>
<div class="container" id="container">
<div class="input-group">
<!--<input type="text" class="form-control" id="textField" placeholder="Add tasks">-->
<form method="POST" class="post-form" >{% csrf_token %}
{{ form|bootstrap }}
<span class="input-group-btn">
<button class="btn btn-default" type="submit" id="plusSign">Go!</button>
</span>
</form>
</div><!-- /input-group -->
<table style="width:100%" id='todoTable'>
<thead id="tableHead">
<tr>
<td>Todo</td>
<td>due date</td>
<td>delete</td>
</tr>
</thead>
<tbody>
{% for task in tasks %}
<tr>
<td>{{ task.title }}</td>
<td> {{ task.due_date }} </td>
<td> <a class="btn btn-default" href="{% url 'tasks_list' %}"><span class="glyphicon glyphicon-remove"></span></a> </td>
</tr>
</body>
{% endfor %}
</table>
</div>
{% endblock %}
<td> <a class="btn btn-default" href="{% url 'post_remove' pk=task.pk %}"><span class="glyphicon glyphicon-remove"></span></a></td>
Url.py
url(r'^task/(?P<pk>\d+)/remove/$', views.post_remove, name='post_remove'),
url(r'^task/(?P\d+)/remove/$,views.post\u remove,name='post\u remove'),
模板/task_list.html
{% extends 'todo/base.html' %}
{% load bootstrap %}
{% block content %}
<h1>Todos</h1>
<div class="container" id="container">
<div class="input-group">
<!--<input type="text" class="form-control" id="textField" placeholder="Add tasks">-->
<form method="POST" class="post-form" >{% csrf_token %}
{{ form|bootstrap }}
<span class="input-group-btn">
<button class="btn btn-default" type="submit" id="plusSign">Go!</button>
</span>
</form>
</div><!-- /input-group -->
<table style="width:100%" id='todoTable'>
<thead id="tableHead">
<tr>
<td>Todo</td>
<td>due date</td>
<td>delete</td>
</tr>
</thead>
<tbody>
{% for task in tasks %}
<tr>
<td>{{ task.title }}</td>
<td> {{ task.due_date }} </td>
<td> <a class="btn btn-default" href="{% url 'tasks_list' %}"><span class="glyphicon glyphicon-remove"></span></a> </td>
</tr>
</body>
{% endfor %}
</table>
</div>
{% endblock %}
<td> <a class="btn btn-default" href="{% url 'post_remove' pk=task.pk %}"><span class="glyphicon glyphicon-remove"></span></a></td>
有人能检查一下我对删除的理解是否正确吗
因此,
task\u list.html
正在为每个todo添加一个主键为href=“/task/49/remove/”
的链接,该链接允许views.py
中的post\u remove函数仅删除“todo”使用特定的href,由于post_remove功能中的请求参数,只有在单击按钮时删除才有效?是。使用ajax,只需简单地调用delete视图,就可以点击数据库并删除条目。只需使用javascript在客户端删除它
或者你可以考虑使用WITH,这样就不会重新发明轮子,增加一些灵活性来进一步改进你的应用程序。您可以添加回调以确保服务器端一切正常
如果你想走到最前沿,你可以去看看。谢谢你的回答!你能看一下我的编辑吗?看一下你的代码,它看起来是正确的,但是当你点击链接时,它会将用户重定向到
'/'
url。您的问题不是直接针对在不重新加载页面的情况下删除任务
?