有没有可能在没有模板的情况下创建函数?就像我试图创建delete函数一样,我想要做的是在单击delete按钮之后立即删除一些内容,然后重定向到其他页面。
我想在页面上放置一个删除按钮,用户可以编辑他们的文章。html是这样的
<button type="submit" class="btn btn-outline-secondary">Save Changes</button>
</form>
我想把删除按钮放在这个按钮旁边。
def edit_entry(request, entry_id):
'''Edit a post.'''
entry = Entry.objects.get(id=entry_id)
if request.method != 'POST':
form = EditEntryForm(instance=entry)
else:
form = EditEntryForm(instance=entry, data=request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse_lazy('main:index'))
return render(request, 'main/edit_entry.html', {'entry': entry, 'form': form})
def delete_entry(request, entry_id):
'''Delete post'''
#I don't wanna create template for this function.
pass
有人能给我小费吗?
发布于 2018-07-02 23:59:29
通过docs 简单视图,您可以使用httpresponse
from django.http import HttpResponse
def delete_entry(request, entry_id):
'''Delete post'''
#I don't wanna create template for this function.
return HttpResponse('done')
发布于 2018-07-04 23:18:17
通常,为此目的使用ajax是有意义的。在本例中,单击的处理分为几个步骤:
1)单击按钮
2) jQuery (或任何其他javascript代码)捕获单击事件,并将AJAX请求(通常是post请求,因为post用于REST协议中的数据修改)发送到您的服务器上(如/delete/my/some/thing/
)在urls.py中定义的url。
3) Djnago将请求路由到delete_something视图(或函数)
4) delete_something接受请求,检查要检查的内容(比如当前用户的一些权限),删除实际要删除的内容,并做出ajax响应。
5) jQuery接受这个响应(它实际上等待3-4步),并检查响应内容,以检测服务器是否认为一切正常或存在一些错误。
下面是从jQuery创建ajax请求的代码:
$('#delete-button').click(function(){
var delete_id = (#delete-button).data()
$.ajax
({
url: '/delete/my/some/thing/',
data: {"id": delete_id},
type: 'post',
success: function(result)
{
// here you can write code to show some success messages
},
error: function(result) {
// here you can write code to show some error messages or re-send request
}
});
});
如果需要,还可以使用$.ajax()
方法,但可以使用$.post()
方法。
这是来自这答案的代码,以使Django响应:
return HttpResponse(json.dumps(response_data), content_type="application/json")
看起来可能是这样的:
import json
from django.http import HttpResponse
def delete_something(request):
resp_data = {}
user = request.user
delete_id = request.POST.get('delete_id') # or None, if there is no delete_id
# here you can check user permissions, if your site has them
# for example check that user can delete something and can delete this entity by writing check_user_can_delete() function
if delete_id and check_user_can_delete(user):
# do your deletion
resp_data = {'status': 'ok'}
else:
resp_data.update(errors=[])
if no delete_id:
resp_data['errors'] = 'no delete_id'
if not check_user_can_delete(user):
resp_data['errors'] = 'you cave no permissions to delete delete_id'
resp = json.dumps(resp_data)
return HttpResponse(resp, content_type='application/json')
还请注意Django 1.7有JsonResponse对象,如我提到的答案中所示。
https://stackoverflow.com/questions/51149354
复制