如何在Django中乘以用户输入

我想创建简单的视图,该视图采用用户输入(数字)并在其他页面上呈现此数字乘以2。


我的代码:


views.py


def 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.py


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

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

我真的很沮丧,因为这太简单了,我无法做到。


慕码人8056858
浏览 84回答 3
3回答

神不在的星期二

我发现对我有用:views.py :def input(request):&nbsp; &nbsp; return render(request, 'input.html', {})def multiply(request):&nbsp; &nbsp; if request.method == 'POST':&nbsp; &nbsp; &nbsp; &nbsp; data = request.POST.get("decimalfield")&nbsp; &nbsp; &nbsp; &nbsp; twice = int(data) * 2&nbsp; &nbsp; &nbsp; &nbsp; 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' %}">&nbsp; &nbsp; {% csrf_token %}&nbsp; &nbsp; <input type="text" name="decimalfield">&nbsp; &nbsp; <button type="submit">Upload text</button></form>乘法.html<label>{{ twice }}</label>

慕的地6264312

参数应该是字典。views.py:def multiply(request):&nbsp; &nbsp; if request.method == 'POST':&nbsp; &nbsp; &nbsp; &nbsp; data = request.POST.get("decimalfield")&nbsp; &nbsp; &nbsp; &nbsp; twice = data * 2&nbsp; &nbsp; &nbsp; &nbsp; return render(request, 'multiply.html', {'twice':twice})&nbsp; &nbsp; return render(request, 'input.html')为什么你有两个指向一个视图的网址?第二个是什么?删除它path('input', views.multiply, name='input'),# path('multiply', views.multiply, name='multiply'),创建乘法.html并渲染两次:<p>{{ twice }}</p>

慕虎7371278

好的,因为当你通过url(name = 'input')进入页面时,第一个方法是请求的,所以他们不会重新运行渲染,因为它在方法POST中,你现在可以编辑:def multiply(request):&nbsp; if request.method == 'POST':&nbsp; &nbsp; data = request.POST.get("decimalfield")&nbsp; &nbsp; twice = {'data':data*2 }&nbsp; &nbsp; return render(request, 'multiply.html', twice)&nbsp; return render(request, 'multiply.html')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python