+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Django-类函数不返回页面

发布于2021-05-01 02:46     阅读(1030)     评论(0)     点赞(15)     收藏(3)


0

1

2

3

4

5

6

7

我正在尝试为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>

0

1

2

3

4

5

6

7

8

9



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/960919/ea7ae0d7c8175e997532/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)