Django: Как я могу вызвать функцию просмотра из шаблона?
У меня вопрос о том, как вызвать функцию просмотра из HTML-кнопки шаблона? Как функция onclick?
Вот шаблон:
<input id="submit" type="button" onclick="xxx" method="post" value="Click" />
И view.py:
def request_page(request):
...do something...
return render_to_response("/directory.html", {})
Большое спасибо.
Ответы
Ответ 1
Один из вариантов: вы можете обернуть кнопку submit
с помощью form
Что-то вроде этого:
<form action="{% url path.to.request_page %}" method="POST">
<input id="submit" type="button" value="Click" />
</form>
(удалите onclick
и method
)
Если вы хотите загрузить определенную часть страницы, без перезагрузки страницы, вы можете сделать
<input id="submit" type="button" value="Click" data_url/>
и на прослушивателе submit
$(function(){
$('form').on('submit', function(e){
e.preventDefault();
$.ajax({
url: $(this).attr('action'),
method: $(this).attr('method'),
success: function(data){ $('#target').html(data) }
});
});
});
Ответ 2
Предполагая, что вы хотите получить значение из пользовательского ввода в текстовом поле html всякий раз, когда пользователь нажимает кнопку 'Click', а затем вызывает функцию python (mypythonfunction), которую вы написали внутри mypythoncode.py. Обратите внимание, что класс "btn" определен в файле css.
внутри templateHTML.html:
<form action="#" method="get">
<input type="text" value="8" name="mytextbox" size="1"/>
<input type="submit" class="btn" value="Click" name="mybtn">
</form>
внутри view.py:
import mypythoncode
def request_page(request):
if(request.GET.get('mybtn')):
mypythoncode.mypythonfunction( int(request.GET.get('mytextbox')) )
return render(request,'myApp/templateHTML.html')
Ответ 3
Как насчет этого:
<a class="btn btn-primary" href="{% url 'url-name'%}">Button-Text</a>
В класс включены стили начальной загрузки для основной кнопки.
Ответ 4
вы можете поместить ввод внутри формы следующим образом: -
<script>
$(document).ready(function(){
$(document).on('click','#send', function(){
$('#hid').val(data)
document.forms["myForm"].submit();
})
})
</script>
<form id="myForm" action="/request_page url/" method="post">
<input type="hidden" id="hid" name="hid"/>
</form>
<div id="send">Send Data</div>
Ответ 5
Например, кнопка выхода может быть записана следующим образом:
<button class="btn btn-primary" onclick="location.href={% url 'logout'%}">Logout</button>
Где конечная точка выхода:
#urls.py:
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'),
Ответ 6
Для удаления всех данных:
HTML файл
class="btn btn-primary" href="{% url 'delete_product'%}">Delete
Поместите приведенный выше код в тег привязки. (тег!)
url.py
path('delete_product', views.delete_product, name='delete_product')]
views.py
def delete_product(request):
if request.method == "GET":
dest = Racket.objects.all()
dest.delete()
return render(request, "admin_page.html")