Django:类函数不返回页面
Posted lland5201314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:类函数不返回页面相关的知识,希望对你有一定的参考价值。
我正在尝试为Django站点创建代码,该代码将接收用户的输入,执行计算,然后以新页面的形式将数据发送回用户,但是,每次运行代码时,它都不会创建代码。新页面,也不会发布结果。
下面是函数本身。
def SparkCalc(request):
new_item = sparkCalculator()
new_item.tix = request.POST['tix']
new_item.tenrolls = request.POST['tenrolls']
new_item.crystals = request.POST['crystals']
new_item.save()
total = new_item.getTotal()
return render(request, 'SparkResults.html', {"title": "Spark Results"}, {"total": total})
下面是我从以下位置调用的Django页面:
<form action="/SparkCalc/" method="POST">{% csrf_token %}
<label for ="tix">Please enter your single roll tickets</label>
<input type="text" id="tix" name="tix"/>
<label for ="tenrolls">Please enter your ten-roll tickets</label>
<input type="text" id="tenrolls" name="tenrolls"/>
<label for ="tix">Please enter your total crystal amount</label>
<input type="text" id="crystals"name="crystals"/>
<input type="submit" value="Get Results"/>
</form>
最后,下面是我创建的类:
class sparkCalculator(models.Model):
tix = models.PositiveIntegerField()
tenrolls = models.PositiveIntegerField()
crystals = models.PositiveIntegerField()
def getTotal(self):
return (int(self.tix)*300) + (int(self.tenrolls)* 3000) + int(self.crystals)
我设想代码的工作方式是,一旦用户在表单中输入信息,Django便运行SparcCalc函数,收集输入的信息,执行数学运算并收集总计,然后将总计发送到新页面。相反,它似乎只是在刷新页面。
是否可以在不创建整个类的情况下运行这种样式的代码?这不是我要存储的信息。理想情况下,我只希望它在运行时执行并完成它,但是以前的尝试都失败了,我只是放弃并尝试创建一个类。
据我所知,它已正确输入到我的urlpatterns中。
from catalog.views import (
SparkCalc,
sparkCalcPage,
)
urlpatterns = [
path('SparkCalc/', sparkCalcPage),
path('SparkResults/', SparkCalc),
]
任何帮助将不胜感激,并在此先感谢您的帮助。
解决方案
render功能的签名如下:
def render(request, template_name, context=None, content_type=None, ...):
…
在您的情况下,您已传递{‘total’:total}给content_type关键字参数而不是context。
# also make sure 'SparkResults.html' can be found by the template loader
render(request, 'SparkResults.html', {"title": "Spark Results", "total": total})
另外,您需要将数据提交到相应的视图。
<form action="/SparkResults/" method="POST">
{% csrf_token %}
...
</form>
更多内容关注个人公众号。持续更新干货。
以上是关于Django:类函数不返回页面的主要内容,如果未能解决你的问题,请参考以下文章