django项目中在后台获取了数据库的某一列,如何将其显示在html模板中的select标签内的option选项下?

问题描述

不好意思,本人是一个初学者,在尝试用django制作网站的时候遇到了一个问题,网上搜索了很久,苦于没有答案,想请教一下。想要实现的是在前端html里有一个select下拉框中的选项中的值在后台数据库中自动获取。

问题出现的环境背景及自己尝试过哪些方法

自己的思路是前端用javescript fetch API 来获取数据,然后循环打印输出到option选项中(这里的代码写法不是很清楚),后台是用django的orm去数据库中取数据(这里我尝试了两种数据格式,返回一个list或者是一个json格式,但是前台的好像都无法获取到) 我感觉应该是我的循环的写法语法有问题,而且后台返还的数据格式也不太清楚具体要使用哪一种。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
html中的代码:

<script type="text/javascript">
// get select options
fetch('/api/getSelectOption')
    .then(res => res.json())
    .then((responseJson)=>{
        var selectobj=document.getElementById('test');
        for (var i = 0; i <responseJson; i++)
            selectobj.options.add(new Option(responseJson[i]))
    })

//后台获取数据的代码

def select(request):
   search_name=models.Webtest.objects.values('name')
   select_list=list(search_name)
   return JsonResponse(select_list, safe=False)

你期待的结果是什么?实际看到的错误信息又是什么?图片描述

实际在chrome中看到获取的数据是这样的,是不是我返还的数据格式有问题,前台获取并打印的具体的写法是怎么样的
呢,很不好意思,接触python和js只有2周的时间,感觉我的写法上面有很多问题。

阅读 3.3k
1 个回答
search_name=models.Webtest.objects.values('name')
search_name是一个列表, 结构是这样的 [{"name": "test1"}, {"name": "test2"}...]
search_name=models.Webtest.objects.values_list('name', flat=True)
search_name也是一个列表, 结构是这样的 ["test1", "test2", ...]

我觉得你想要的是第二种

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题