【问题标题】:javascript form does not lend itself to database designedjavascript 表单不适合数据库设计
【发布时间】:2018-02-11 20:52:00
【问题描述】:

Javascript 创建我的 html 模板表。下面的函数代码在 TABLE 的 for 循环内调用,而 TABLE 又在 ROUND 的 for 循环内调用。这两个循环是由变量(NumberOf)tables和(NumberOf)rounds决定的,所以它们会随着使用而变化。数据库需要维护每个 ROUND 中每个 TABLE 的 6 个字段的记录,但这些字段名称尚未编程(还没有?)从一个 ROUND/TABLE 实例到另一个实例不同,原因有多种:目前尚不清楚如何这样做以一种与python数据模型相似的方式;我希望有一个更简单的选择,并且;例如,我不想在 javascript 中使用 jinja 类型的代码使服务器负担过重,正如在 stackoverflow 其他地方提到的那样。

function round1(ROUND,TABLE){
        var tt;
        tt  =   '   <div class="table">Table '+ TABLE +''
        tt +=   '       <div class="flex-container partners1">'
            tt +=   '       partners1'
            tt +=   '       <input type="text"  maxlength="8" name="partner1" value="name' + Number(1+4*(TABLE-1)) + '"></input>'
            tt +=   '       <input type="text"  maxlength="8" name="partner2" value="name' + Number(2+4*(TABLE-1)) + '"></input>'
            tt +=   '       <input type="number" name="score1" >score1</input>  '
            tt +=   '       </div>'
        tt +=   '       <p>'
        tt +=   ''
        tt +=   '       </p>'
        tt +=   '       <div class="flex-container partners2">'
            tt +=   '       partners2'
            tt +=   '       <input type="text" maxlength="8" name="partner3" value="name' + Number(3+4*(TABLE-1)) + '"></input>'
            tt +=   '       <input type="text" maxlength="8" name="partner4" value="name' + Number(4+4*(TABLE-1)) + '"></input>'
            tt +=   '       <input type="number" name="score2" >score2</input>  '
            tt +=   '       </div>'
        tt +=   '   </div>'
        return tt;
    }

数据模型如下。我担心将数据发送回服务器并将结果返回模板的处理负担。但我也很困扰如何有效地解析和处理数据项。

class Parties(ndb.Model):
    email = ndb.StringProperty()
    page = ndb.KeyProperty(kind=Pages)
    name = ndb.StringProperty()
    tables = ndb.IntegerProperty(default=0)
    rounds = ndb.IntegerProperty(default=0)

class Rounds(ndb.Model):
    party = ndb.KeyProperty(kind=Pages)
    number = ndb.IntegerProperty(default=0)

class Tables(ndb.Model):
    party = ndb.KeyProperty(kind=Pages)
    number = ndb.IntegerProperty(default=0)
    partner1 = ndb.StringProperty(default="")
    partner2 = ndb.StringProperty(default="")
    partner3 = ndb.StringProperty(default="")
    partner4 = ndb.StringProperty(default="")
    score1 = ndb.IntegerProperty(default=0)
    score2 = ndb.IntegerProperty(default=0)

所以我正在寻找有关如何重写 javascript 或重新设计数据库以及如何构造 python get 和 post template_values 以协调两者的想法。

【问题讨论】:

    标签: javascript python


    【解决方案1】:

    在进一步分析后,我将尝试重写我的 Python 代码,以完成现在使用 javascript 完成的大部分处理,希望可以最大限度地减少数据和代码的不匹配。我希望通过提出这个问题来了解避免这种重写的方法。

    或者为了尽量减少 Python 重新编码,因为有很多 javascript 代码未显示,也必须重做,我可能会修改 javascript 代码,以便每个输入名称都包含其圆形和表格值:例如,而不是 name="parent1" , name="r0t0parent1" for parent1 在第 1 轮和表 1 中。Python 代码应该能够解析 self.request.get 的此类名称,希望 jinja2 模板响应的创建和解析不会太繁琐,但我不期待开发额外的jinja2。也许可以采用suggested here 的想法。我欢迎任何进一步的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-18
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      相关资源
      最近更新 更多