V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
dddd
V2EX  ›  Python

[新手] 为什么我 Tornado 利用 html 表单的 name 值可以添加数据,但是无法删除 MongoDB 某条数据??

  •  
  •   dddd · 2014-05-22 10:39:46 +08:00 · 2551 次点击
    这是一个创建于 3646 天前的主题,其中的信息可能已经有所发展或是发生改变。
    class DelLiveHandler(tornado.web.RequestHandler):
    def get(self):
    self.render("del_live.html")
    def post(self):
    temp = dict()
    coll = self.application.db.lives
    date = self.get_argument("date", "")
    city = self.get_argument("city", "")
    venue = self.get_argument("venue", "")
    if date != "":
    temp["date"] = date
    elif city != "":
    temp["city"] = city
    elif venue != "":
    temp["venue"] = venue
    coll.remove(temp)
    self.redirect("/live")
    上述代码操作这个表单:
    {% extends "base.html" %}

    {% block content %}
    <fieldset>
    <h3>Delete Tour Dates</h3>
    <form method="post">
    <p><label for="date">Date:</label>
    <input type="text" id="date" name="date" value="Tour date"/></p>
    <p><label for="city">City:</label>
    <input type="text" id="city" name="city" value="Tour city"/></p>
    <p><label for="venue">Venue:</label>
    <input type="text" id="venue" name="venue" value="Tour Venue"/></p>
    <input type="submit" value="Delete" id="delete">
    </form>
    </fieldset>
    {% end %}
    {% block import_js %}
    <script type="text/javascript" src="{{ static_url("js/global.js") }}"></script>
    <script type="text/javascript" src="{{ static_url("js/contact.js") }}"></script>
    {% end %}
    5 条回复    2014-05-22 13:17:00 +08:00
    MasterYoda
        1
    MasterYoda  
       2014-05-22 11:03:33 +08:00
    不清楚逻辑阿,感觉你的逻辑可能不该用elif。
    print temp 看看和你想象的一样吗
    dddd
        2
    dddd  
    OP
       2014-05-22 11:48:33 +08:00
    @MasterYoda
    就是我随便输入['date','city','venue']中的一个都可以找到并删除包含这个值的那条数据

    如果我输入的是city,第一个留空print 这个{'date': 'Tour date'}
    dddd
        3
    dddd  
    OP
       2014-05-22 11:51:57 +08:00
    @MasterYoda
    我用了个笨方法: [泪]
    if date != "Tour date":
      temp["date"] = str(date)
    elif city != "Tour city":
      temp["city"] = str(city)
    elif venue != "Tour venue":
      temp["venue"] = str(venue)
    dddd
        4
    dddd  
    OP
       2014-05-22 11:54:36 +08:00
    @MasterYoda 不该用elif,如果我三个都填了,就智能得到第一个,不科学,O(∩_∩)O谢谢!
    但是我觉得我这办法看起来太笨,应该有更好的,
    MasterYoda
        5
    MasterYoda  
       2014-05-22 13:17:00 +08:00
    @dddd
    我前端完全不会啊,但是好奇为什么<input type="text" id="date" name="date" value="Tour date"/>
    默认是有value的,如果不填 , date直接是None不好嘛?
    然后就是 你把elif都改成if就行了。就会得到3个的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3297 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:58 · PVG 20:58 · LAX 05:58 · JFK 08:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.