为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Django中乘以用户输入

如何在Django中乘以用户输入

慕码人8056858 2022-08-16 16:37:38
我想创建简单的视图,该视图采用用户输入(数字)并在其他页面上呈现此数字乘以2。我的代码:views.pydef multiply(request):    if request.method == 'POST':        data = request.POST.get("decimalfield")        twice = data * 2        return render(request, 'multiply.html', twice)输入.html<form method="POST" action="{% url 'input' %}">    <input type="text" name="decimalfield">    <button type="submit">Upload text</button></form>我的问题是这不起作用,现在我得到错误:视图.views.multiply没有返回HttpResponse对象。它返回了 None。我的第二个问题是我不知道如何在第二页上呈现该结果,而不是在同一页面上。网址应该看起来像我的吗?urls.pypath('input', views.multiply, name='input'),path('multiply', views.multiply, name='multiply'),我真的很沮丧,因为这太简单了,我无法做到。
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我发现对我有用:


views.py :


def input(request):

    return render(request, 'input.html', {})


def multiply(request):

    if request.method == 'POST':

        data = request.POST.get("decimalfield")

        twice = int(data) * 2

        return render(request, 'multiply.html', {'twice':twice})

urls.py :


path('input', views.input, name='input'),

path('multiply', views.multiply, name='multiply'),

输入.html


<form method="POST" action="{% url 'multiply' %}">

    {% csrf_token %}

    <input type="text" name="decimalfield">

    <button type="submit">Upload text</button>

</form>

乘法.html


<label>{{ twice }}</label>


查看完整回答
反对 回复 2022-08-16
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

参数应该是字典。views.py:


def multiply(request):

    if request.method == 'POST':

        data = request.POST.get("decimalfield")

        twice = data * 2

        return render(request, 'multiply.html', {'twice':twice})

    return render(request, 'input.html')

为什么你有两个指向一个视图的网址?第二个是什么?删除它


path('input', views.multiply, name='input'),

# path('multiply', views.multiply, name='multiply'),

创建乘法.html并渲染两次:


<p>{{ twice }}</p>


查看完整回答
反对 回复 2022-08-16
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

好的,因为当你通过url(name = 'input')进入页面时,第一个方法是请求的,所以他们不会重新运行渲染,因为它在方法POST中,你现在可以编辑:


def multiply(request):

  if request.method == 'POST':

    data = request.POST.get("decimalfield")

    twice = {'data':data*2 }

    return render(request, 'multiply.html', twice)

  return render(request, 'multiply.html')


查看完整回答
反对 回复 2022-08-16
  • 3 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信