django - Django使用模态删除用户
问题描述
我想在 django 中使用模态删除用户。我有一个删除功能,我不知道应该如何返回模板。
视图.py:
@login_required(login_url='admin_signin')
@admin_only
def admin_profiles_deletion(request, username):
context = {}
account = Account.objects.get(username=username)
account.delete()
messages.success(request, "User deleted!")
context['account'] = account
return render(request, 'HOW SHOULD I REFER MODALS HERE?', context)
还有我的urls.py
样子:
path('admin/profile/<str:username>/delete', views.admin_profiles_deletion, name='admin_profiles_deletion'),
最后我的模板是:
<td class="text-center td-actions">
<a href="{% url 'admin_view_profiles' account.username %}"><i class="la la-eye view"></i></a>
<a href="{% url 'admin_profiles_general_edition' account.username %}"><i class="la la-edit edit"></i></a>
<a href="{% url 'admin_profiles_deletion' account.username %}" data-toggle="modal" data-target="#deleteaccount">
<i class="la la-close delete"></i>
</a>
<!-- Modal -->
<div class="modal fade" id="deleteaccount" tabindex="-1" role="dialog" aria-labelledby="deleteaccountTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteaccountTitle">Delete confirmation</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<h5>Do you want to delete?</h5>
</div>
<div class="modal-footer">
<div class="col-6 text-left">
<div class="previous">
<form method="POST">
{% csrf_token %}
<input class="btn btn-danger btn-sm btn-block" type="submit" name="submit" value="Yes">
</form>
</div>
</div>
<div class="col-6 text-left">
<div class="next">
<a class="btn btn-info btn-sm btn-block" href="{% url 'accounts' %}">No</a>
</div>
</div>
</div>
</div>
</div>
</div>
</td>
在模态中,我想点击YES
然后删除特定帐户。但是我在使用模态时不知道该怎么做。
解决方案
试试这个。
from django.shortcuts import redirect
...
def admin_profiles_deletion(request, username):
...
return redirect("/admin/profile/")
# or to return to same (previous) page:
return redirect(request.META['HTTP_REFERER'])
在您的模板中添加action
属性到您的表单
<form method="POST" action="{% url 'admin_profiles_deletion' account.username %}">
{% csrf_token %}
<input class="btn btn-danger btn-sm btn-block" type="submit" name="submit" value="Yes">
</form>
或动态更新action
属性
<a href="#" data-url="{% url 'admin_profiles_deletion' account.username %}" class="deleteaccount">
<i class="la la-close delete"></i>
</a>
而不是jQuery
<script>
$(document).ready(function() {
$('a.deleteaccount').on( "click", function() {
event.preventDefault();
$('#deleteaccount form').attr('action', $(this).data("url"));
$('#deleteaccount').modal('show');
});
});
</script>
更新- 工作示例http://jsfiddle.net/cbzmewhq/1/
添加<span id="current_username"></span>?
到您的模态主体。
然后jQuery
在单击时添加您想要的文本:
$('#deleteaccount #current_username').text($(this).data("username"));
以下是您的代码示例
...<!-- YOUR TABLE -->
<td class="text-center td-actions">
<a href="{% url 'admin_view_profiles' account.username %}"><i class="la la-eye view"></i></a>
<a href="{% url 'admin_profiles_general_edition' account.username %}"><i class="la la-edit edit"></i></a>
<a href="#" data-username="{{ account.username }}" data-url="{% url 'admin_profiles_deletion' account.username %}" class="deleteaccount">
<i class="la la-close delete"></i>
</a>
</td>
....<!-- YOUR TABLE -->
<!-- Modal OUT OF TABLE -->
<div class="modal fade" id="deleteaccount" tabindex="-1" role="dialog" aria-labelledby="deleteaccountTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteaccountTitle">Delete confirmation</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<!-- ADD SPAN TO ADD USERNAME dynamically -->
<h5>Do you want to delete <span id="current_username"></span>?</h5>
</div>
<div class="modal-footer">
<div class="col-6 text-left">
<div class="previous">
<form method="POST">
{% csrf_token %}
<input class="btn btn-danger btn-sm btn-block" type="submit" name="submit" value="Yes">
</form>
</div>
<div class="col-6 text-left">
<div class="next">
<a class="btn btn-info btn-sm btn-block" href="{% url 'accounts' %}">No</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- ADD BELOW CODE TO THE BOTTOM OF BODY -->
<script>
$(document).ready(function() {
$('a.deleteaccount').on( "click", function() {
event.preventDefault();
$('#deleteaccount form').attr('action', $(this).data("url"));
$('#deleteaccount #current_username').text($(this).data("username"));
$('#deleteaccount').modal('show');
});
});
</script>
推荐阅读
- delphi - 组件代码中的 TThread -Delphi 7
- javascript - (节点:12752)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“byteLength”
- python - 在没有 root 或影响全局包的情况下在 python3.6 venv 中升级 SQLite 版本
- python - 虚拟环境会浪费磁盘空间吗?
- node.js - postgresql with Node js Sequalize One-To-One 允许模型 1 的多个实例与模型 2 的同一个实例相关联
- python - 在目录和子目录中搜索丢失的文件
- c++ - 向量的向量的并行 push_back
- string - 在 Lua 中查找不包含特定模式的字符串
- rust - 是否可以仅在 Linux 上设置目标目录?
- java - 将java时间戳字符串转换为java时间戳对象