django - 如何将参数从一个模板发送到 django 中的另一个模板/视图?
问题描述
好的,所以我在views.py中有这些功能
def main(request):
if request.method == 'POST':
return newFunction(request)
return render(request,'user/main.html')
def newFunction(request):
num = request.POST["number"]
let = request.POST["letter"]
context = {'num':num,'let':let}
return render(request,'user/test.html',{'c':context})
那 main.html 看起来像这样
{%extends 'base/base.html'%}
{%block title%}Main{%endblock%}
{%block content%}
<form method="post">
{%csrf_token%}
<input type="text" name="number">
<input type="text" name="letter">
<button type="submit">Save</button>
</form>
{%endblock%}
urls.py
path('index/',main,name='main'),
path('test/',newFunction,name='test'),
如您所见,我进入 main.html 页面并出现一个表单,要求我输入一个数字和一个字母。我输入这两个输入,当点击提交时,它会将我重定向到另一个 html 并向我显示字母和数字。问题是 url 仍然显示 user/index.html,而不是 user/test.html
我怎样才能做到这一点?我想基本上单击提交并将所有值发送到另一个模板,但在此过程中更改 url。
解决方案
你可以使用 ajax 来做到这一点。您也可以使用表单,但 ajax 更适合仅将数据传递给查看。
只需发送带有一些数据的 ajax 请求,并将其发送到您的目标视图。
$.ajax({
type: 'POST',
url: "{% url 'test' %}",
data: {
"csrfmiddlewaretoken": "{{ csrf_token }}",
"num": 'number',
"let": 'letter'
},
dataType: 'json',
success: function(e) {
// success after receive response
}
});
当然你可以用form
. 只需将您的目标网址添加到action
.
<!-- add your target url in action -->
<form method="post" action="{% url 'test' %}">
{%csrf_token%}
<input type="text" name="number">
<input type="text" name="letter">
<button type="submit">Save</button>
</form>
推荐阅读
- node.js - 为什么我的 ejs 模板没有显示相关数据?
- django - Django REST Viewsets - 无法使用自定义查询集删除
- php - 在 laravel 中找不到资源的奇怪问题
- c++ - 通过分隔符将 QString 拆分为多个 QString?
- javascript - 如何像在典型的图形编辑器中那样使用鼠标滚轮实现缩放
- java - 这种类型的正则表达式命令是否存在?
- css - SVG CSS过渡不适用于`use`元素(Chrome)
- database - 将本地数据库推送到 heroku 的 postgresql 数据库时出错
- c# - 从表单发送电子邮件仅在我的网页的已部署状态下失败
- javascript - 提取序列乱序返回