Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django的加法器_Python_Django - Fatal编程技术网

Python 使用Django的加法器

Python 使用Django的加法器,python,django,Python,Django,我是Django的新手,试图让这段代码作为加法器工作 """Perform addition using Django""" template = """ <form method="post" action=" ">{% csrf_token %} <input type="text" name="a" > + <input type="text" name="b" > <input type="submit" value="="&g

我是Django的新手,试图让这段代码作为加法器工作

"""Perform addition using Django"""

template = """
<form method="post" action=" ">{% csrf_token %}
    <input type="text" name="a" > + <input type="text" name="b" >
    <input type="submit" value="="> <input type="text" name="result >
</form>"""

但无法获得正确的渲染结果。不太确定哪里出了问题。 感谢您的评论

  • 最好不要在
    action=”“

  • 模板中缺少双引号
    ,您没有填写
    a
    b
    结果。你还需要动作指向某个地方。另外,您缺少一个报价。最后,使用
    get
    而不是
    post
    ,因为提交表单不会更改任何持久性内容,例如数据库:

    template = Template("""
    <form method="get" action="{% url add %}">{% csrf_token %}
        <input type="text" name="a" value="{{a}}">
        + <input type="text" name="b" value="{{b}}">
        <input type="submit" value="=">
        <input type="text" name="result" value="{{result}}">
    </form>""")
    
    url.py
    中,需要名称才能使上面的
    url
    标记正常工作:

    urlpatterns = patterns('',      
        url(r'^add/$', 'myapp.views.add', name='add'),   
    )
    

    或者更简洁的
    request.POST.get('a',0)
    request.POST.get('b',0)
    我可以在一个try-except块中组合如下:
    try:a=int(request.POST.get('a',0))b=int(request.POST.get('b',0))除了:a=0b=0,它也可以很好地工作,但不确定这样做是否是一种好的做法@奥克姆@MikeDeSimone@user1282634没关系,如果您担心捕获到可能的意外错误,您可以将范围缩小到
    ,ValueError除外。我建议使用单独的
    try
    块,这样只有断开的输入更改为
    0
    template = Template("""
    <form method="get" action="{% url add %}">{% csrf_token %}
        <input type="text" name="a" value="{{a}}">
        + <input type="text" name="b" value="{{b}}">
        <input type="submit" value="=">
        <input type="text" name="result" value="{{result}}">
    </form>""")
    
    def add(request):
        try:
            a = int(request.POST.get('a', 0))
        except:
            a = 0
    
        try:
            b = int(request.POST.get('b', 0))
        except:
            b = 0
    
        c = RequestContext(request, {'a': a, 'b': b, 'result': a + b})
        return HttpResponse(template.render(c))
    
    urlpatterns = patterns('',      
        url(r'^add/$', 'myapp.views.add', name='add'),   
    )