【问题标题】:Django button click rendered View twiceDjango 按钮单击渲染视图两次
【发布时间】:2022-01-12 22:41:59
【问题描述】:

我对 Django 很陌生,还在学习。我会尽量解释我的问题。在我的模板中单击一个按钮,我想使用一些值和变量:

<form method='get' action=''>
<input type="submit" value="{{ answer1 }}" name="btn1" />
<input type="submit" value="{{ answer2 }}" name="btn2" />
<input type="submit" value="{{ answer3 }}" name="btn3" />
<input type="submit" value="{{ answer4 }}" name="btn4" />
</form>

我的views.py

class MyView(TemplateView):

def get(self, request, *args, **kwargs):
    obj = MyObject()
    self.create_dict(q_obj)      

    if request.GET.get('btn1'):
       # some code...
return render(request, self.template_name, { ... })

现在的问题是,每当我单击按钮时,使用的字典变量都会被下一个替换,因为有一个新的渲染。

[12/Jan/2022 21:48:46] "GET /quizapp/home/subject/ HTTP/1.1" 200 5267
{'answer': <Answer: 3>, 'correct': False}
{'answer': <Answer: 5>, 'correct': False}
{'answer': <Answer: 2>, 'correct': True}
{'answer': <Answer: 7>, 'correct': False}
[12/Jan/2022 21:48:47] "GET /quizapp/home/subject/round/ HTTP/1.1" 200 7864
{'answer': <Answer: 4>, 'correct': True}
{'answer': <Answer: 2>, 'correct': False}
{'answer': <Answer: 6>, 'correct': False}
{'answer': <Answer: 1>, 'correct': False}

我想使用第一组,但我更改的所有内容都与第二本字典有关。我尝试使用一些重定向命令进行修复,但没有任何效果...... 我在这里误解了一些 Django(GET/POST) 技术? 如果有人可以帮助我,谢谢;)

【问题讨论】:

    标签: python django button click rendering


    【解决方案1】:

    互联网上任何地方的提交按钮意味着您已完成处理此表单并希望进入下一步。由于您的所有测验选项都是提交按钮,因此无论何时单击它们都会获得新的渲染并不奇怪。

    每当您点击任何这些按钮时,您都在提交表单。您需要实现一个单选按钮(选择)来避免这种情况。表单末尾只有一个提交按钮。 An example is provided here

    每次提交表单时,它都会再次呈现。因此,您应该只在想要获取新表单并进入下一步时按提交。

    【讨论】:

    • 非常感谢球猪!您为我指明了正确的道路;)我重新组织了自己的观点,现在一切正常。但我应该更多地了解形式和技术。干杯!
    • 别担心,我希望你做一个很酷的项目,并在路上学到很多东西。 @亚历克斯
    猜你喜欢
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 2013-04-26
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多