UUID从django数据库到Javascript,根据当前页面更改链接

qgelzfjb  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(97)

我做了一个wordlegolf游戏,可以跟踪你的分数,一个用户可以有多个记分牌。我正在尝试有箭头,让你在你的记分牌上旋转。image of arrows
因此,我需要能够跟踪用户当前所在的记分板,并在每个记分板之间循环
我已经尝试了很多方法,并且能够让它工作,但是现在我已经实现了UUID,我的javascript出现了很多错误。我尝试添加这个UUIDEncoder类,我在网上看到,但是没有帮助。
views.py

newlink = []
links = list(CreatedScoreboardUnique.objects.filter(players=request.user))
for link in links:
    newlink.append(link.pk)
newlink = json.dumps(newlink, cls=UUIDEncoder)
class UUIDEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, UUID):
            # if the obj is uuid, we simply return the value of uuid
            return obj.hex
        return json.JSONEncoder.default(self, obj)

超文本标记语言

<svg width="37" height="37" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" onclick="nextScoreboard()">
     <path d="M15.0378 6.34317L13.6269 7.76069L16.8972 11.0157L3.29211 11.0293L3.29413 13.0293L16.8619 13.0157L13.6467 16.2459L15.0643 17.6568L20.7079 11.9868L15.0378 6.34317Z" fill="currentColor"/>
</svg>

javascript语言

function nextScoreboard(){

    console.log('next clicked')
    var links = JSON.parse("{{links|safe}}")
    var currId = "{{scoreboard.id}}"
    var nextlink = false

    for(i = 0; i < links.length; i++){
        if(links[i] == currId){
            window.location.href = "http://127.0.0.1:8000/scoreboard/" + links[i+1]
            
        }
    }
}

这是我一直得到的错误,无法弄清楚

是否有更简单的方法来完成此操作,或者您可以帮助解决此错误?

fcwjkofz

fcwjkofz1#

我想出了一个方法,使这项工作,虽然我相信有一个更好的方法来做到这一点。
我去掉了json dumb并将其转换为字符串
views.py

newlink = []
links = CreatedScoreboardUnique.objects.filter(players=request.user)
for link in links:
    newlink.append(str(link.pk))

然后,对于javascript,我在使用JSON.parse时替换了多余的字符,以消 debugging 误
javascript语言

function nextScoreboard(){
    var links = JSON.parse("{{links}}".replace(/&#x27;/g,'"'))
    var currId = "{{scoreboard.unique_id}}"
    for(i = 0; i < links.length; i++){
        if(links[i] == currId){
            if(i+1 != links.length){
                window.location.href = "http://127.0.0.1:8000/scoreboard/" + links[i+1]
            } else {
                window.location.href = "http://127.0.0.1:8000/scoreboard/"
            }
        }
    }
}

因此,基本上删除这些字符允许我创建我需要的格式,使这项工作

相关问题