如何在 Django 中为按钮分配函数



urlpatterns=[
path('login/',views.LoginUser,name='login'),
path('logout/',views.LogoutUser,name='logout'),
path('register/',views.RegisterUser,name='register'),
path('delete/<str:pk>',views.DeleteUser,name='delete'),



path('',views.home,name='home'),
#path('usersSettings/',views.UserSettings,name='userSettings'),
path('users/<str:pk>/',views.users,name='users'),
path('parameters/',views.parameters,name='parameters'),
path('EbotManual/',views.EbotManual,name='EbotManual'),
path('LedManual/',views.LedManual,name='LedManual'),
path('TestRutins/',views.TestRutins,name='TestRutins')
]

我正在设计一个基于django的网站。我想在同一页面中更新用户信息并删除用户(如果需要)。我创建了更新,它工作正常。但是当我将删除用户功能发送到相同的html文件时,我希望它删除用户的按钮也会像另一个按钮一样更新。我需要这两个按钮来为自己的目的工作。我认为在不更改任何内容的情况下为按钮分配删除功能可能会有所帮助,这就是我这样写标题的原因。谢谢!

<div class="login--wrapper">
<form method="POST" class="form">
{% csrf_token %}
<div class="center">
<h1>Kullanıcı Ayarları</h1>
{% csrf_token %}
{% for field in form  %}
<div class="mb-3">
<label for="exampleInputPassword1" class="from-label">{{field.label}}</label>
{{field}}
</div>
{% endfor %}
<button type="submit" class="btn btn-primary">Update Info</button>
<button type="submit" class="btn btn-primary">Delete User </button>

</div>
def DeleteUser(request,pk):
user=DataEbotUser.objects.get(id=pk)
if request.method=='POST':
user.delete()


context={'user':user}
return render(request,'home/UsersPage.html',context)
def users(request,pk):  
user=DataEbotUser.objects.get(id=pk)
form=EditUserForm(instance=user)


if request.method=='POST':
form=EditUserForm(request.POST, instance=user)
if form.is_valid():
form.save()

context={'form':form , 'users':users}
return render(request,'home/UsersPage.html',context)

url patterns: 
urlpatterns=[
path('login/',views.LoginUser,name='login'),
path('logout/',views.LogoutUser,name='logout'),
path('register/',views.RegisterUser,name='register'),
path('delete/<str:pk>',views.DeleteUser,name='delete'),



path('',views.home,name='home'),
#path('usersSettings/',views.UserSettings,name='userSettings'),
path('users/<str:pk>/',views.users,name='users'),
path('parameters/',views.parameters,name='parameters'),
path('EbotManual/',views.EbotManual,name='EbotManual'),
path('LedManual/',views.LedManual,name='LedManual'),
path('TestRutins/',views.TestRutins,name='TestRutins')
]

问题是您的两个按钮将表单提交到呈现表单的同一页面。没有办法区分它们。

如果希望每个按钮执行不同的操作,一种方法是:

<button type="submit" class="btn btn-primary">Update Info</button>
<a class="btn btn-danger" type="button" href="{% url 'delete' user.pk %}">Delete User</a>

由于功能users是唯一一个根据表单数据管理用户信息更新的功能,因此按钮Update Info保持submit button的形式。

另一方面,Delete User按钮是不同的。它只是调用函数DeleteUser向其传递一个将用于删除用户的pk

以下是需要考虑的一些事项:

  • 不得直接调用函数DeleteUser。它是必须呈现页面的函数users
  • 您必须在函数users的上下文中呈现user object,以便能够检索将用于按钮delete的用户的pk
  • 函数DeleteUser不得呈现模板,而是重定向到另一个 URL,如 home。类似return redirect('home')

最新更新