Just map your view function to a url and call it, for example:
views.py
def remove_item(request, pk):
item = Item.objects.get(pk=pk)
item.delete()
return redirect('home')
urls.py
urlpatterns = [
path('remove_item/<int:pk>/', views.remove_item, name='remove_item'),
]
item.html
{{ item.name }}
<a href='{% url 'remove_item' item.pk %}'><button>Delete</button></a>
This is just an example function to delete an item that supposedly exists.
To answer your other question: Yes you can use forms with action attribute containing a url to the view that would handle its submittion (that usually means that form processes some sent data) and yes you can use multiple forms/buttons on the same page.