【问题标题】:Dynamic Django-Javascript [Beginner]动态 Django-Javascript [初学者]
【发布时间】:2018-06-18 00:23:43
【问题描述】:

这就是我要为我的项目实现的目标。

背景:教育数学网站

目标:当用户点击“初学者”部分时,他会被问到一个问题。该问题将被处理,如果它是正确的,他可以按“再次”,然后会询问另一个随机问题。

每个问题都是动态生成的,它存储在视图而不是模型/数据库中。

因此,我有一个 .html 文件,它呈现随机选择的多个视图(即随机选择要显示的问题)。

每个问题都不同。

示例问题“玛丽有 8 个苹果,她吃了 3 个。她还剩多少?”

在这个问题中,我想让 JavaScript 打印出 8 张苹果的图片。

另一个问题“鲍勃有 6 辆汽车,还买了 4 辆……”

在这个问题中,我想让 JavaScript 打印出 4 辆汽车

等等等等……

是否可以有一个 javascript 文件来检测回答的问题类型并生成适当的图形,或者这是一种不好的做法,因为文件可能会很快变得非常大,我担心它可能会变慢关闭服务器。有没有更好的方法来做到这一点

我可以将 javascript 代码从 Django 视图发送到 .js 文件,这样只需要处理相关代码

我已经知道如何让 JavaScript 做我想做的事,我只是不确定它是否是最有效/优化的方式 :-)

【问题讨论】:

    标签: javascript python django dynamic views


    【解决方案1】:

    我看到了两种可能性:

    • 您将所有数据存储在 HTML 中,然后首先将其隐藏,然后使用 Javascript 按需显示。这将导致它超级大(并且可能是混乱的 HTML 和 JS)文件。但这可以做你想做的。您可以简单地使用 HTML/CSS/JS 堆栈来完成您的项目。

    • 您创建了一个非常空的 HTML 文件,您将使用 AJAX 调用对 Django 视图进行动态修改。这一次是 Django Ajax View 逻辑会变得混乱,具体取决于您有多少问题。

    因为文件可能会很快变得非常大,我担心它可能会减慢服务器速度

    页面加载时间只会变长,具体取决于要加载的图像数量和 Javascript。

    我可以将 javascript 代码从 Django 视图发送到 .js 文件,这样只需要处理相关代码吗?

    最终你可以从 Django 将 javascript 发送到前端,但这样做并不明智。您应该优化您的 Javascript 以专注于可重用性。

    我只是不确定这是最有效/优化的方式

    最有效/优化的方法是使用数据库和 Ajax 随机查询问题。我的意思是,您可以使用旨在存储数据的技术做更多事情。

    就在我完成这篇文章的时候,我想知道你为什么不想使用数据库。 我想也许你不能设置数据库服务器,没关系,你可以使用SQLite。它是serverless,在我看来,它会大大简化您的项目。如果我猜错了,请注意我的假设。

    【讨论】:

    • 我的想法类似于#1,除了每个视图都会传递一个像“问题 3”这样的参数,该参数在 HTML 页面上呈现但隐藏。会有一个 javscript/jquery 函数来抓取节点(例如,使用 class="hidden")并根据该问题(例如,如果 p = 'question 3')呈现动态图像/动画。然而,图像/动画将存储在外部,因此它们不必加载到页面上,并且更容易维护。哦,我不将问题存储在数据库中的原因是因为问题是动态生成的——嗯,是其中使用的数字的值。
    • 你可以用 Ajax 做所有你想做的动态事情。在后端生成数字,将这种 JSON 发送到前端:{"question": "Mary has 8 apples, she eats 3. How much does she have left?", "numbers": [8, 3], "operation": "substract"} 您的前端将只显示问题,但您的 Javascript 将存储所有其余部分并将其发送回 Django 后端,例如:{"numbers": [8, 3], "operation": "substract", "answer": 5}在此之后,这一切都归结为您要存储结果的位置。 Javascript 或 Django。如果是 Django,则需要 SQLite。
    • 我尝试做类似的事情,但在使用 AJAX / Django 时遇到了一些困难,所以我使用会话来存储答案并查看函数来处理它们。它最终以这种方式工作。我会尝试按照您的方式进行更多练习
    • 如果它做你想要的,它至少已经足够好了。我建议您再尝试一次 AJAX,有一些很好的资源可以帮助您入门:herethere
    • 感谢会调查他们。我也刚刚有了另一个想法,为每个问题使用自定义 .js 文件,并将每个 Django 视图的 js 脚本名称传递给脚本 src 属性标签
    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多