#javascript #python #django #url
#javascript #python #django #url
Вопрос:
У меня есть следующий код в одном из моих шаблонов.
<html>
<body>
<script>
var val1 = 10;
var val2 = 20;
</script>
<a href="/generate/">Generate</a>
</body>
</html>
Я хочу использовать значения val1 и val2 в generate
функции в views.py файл. Это было бы что-то вроде этого.
def generate(request):
# do something with val1 and val2
Я не понимаю, как я могу передать эти значения функции. Какова наилучшая практика для этого, должен ли я попытаться получить информацию через параметры URL? Или, возможно, мне следует просто удалить Javascript и делать все на Python непосредственно в generate()
функции?
Спасибо за вашу помощь!
Ответ №1:
Вам необходимо применить HTTP-методы, такие как GET или POST.
используйте этот код в шаблоне просмотра (пример — index.html
):
<html>
<body>
<form method="post" action="/generate">
{% csrf_token %}
<input type="number" name="val1" value="10">
<input type="number" name="val2" value="20">
<input type="submit" value="generate">
</form>
</body>
</html>
и использовать этот код в views.py
:
def index(request):
return render_to_response('index.html', RequestContext(request))
def generate(request):
val1 = request.POST.get('val1', 0)
val2 = request.POST.get('val2', 0)
sum = val1 val2
return HttpResponse(str(sum))
Эта ссылка полезна для вас: https://docs.djangoproject.com/en/dev/topics/forms /
Ответ №2:
Передайте параметры с помощью GET:
<html>
<body>
<a href="/generate/?val1=10amp;val2=20">Generate</a>
</body>
</html>
Теперь вы можете получить к ним доступ в режиме просмотра, используя атрибут запроса:
def generate(request):
if request.method == 'GET':
val1 = request.GET.get('val1')
val2 = request.GET.get('val2')
#futher code
https://docs.djangoproject.com/en/dev/ref/request-response/#
Комментарии:
1. Я использовал это, поскольку это кажется проще и чище, чем использование формы. Спасибо!