如何在 JavaScript 中使用 Django 的模型

维森特C

我在 Django 中有一个应用程序,数据库中有 2 条新闻。我正在使用 views.py 以便在我的 html 页面中显示这些新闻。

模型.py

class News(models.Model):
    news_title     = models.CharField(max_length=150)
    news_body       = models.TextField(max_length=1500)

视图.py

def news(request):
    news_f = News.objects.all().order_by('-news_id') 
    news_f_html = serializers.serialize("json",News.objects.all())
    news_dic=  {'news_f':news_f,'ac_tab_n':'ac_tab', 'news_f_html':news_f_html}
    return render(request, 'news.html',news_dic)

我想使用 html 标签显示新闻正文,但我不能,因为它是一个字符串。我一直在阅读并尝试序列化新闻以便在 JavaScript 中使用 news_f_html。

脚本.js

var news = "{{ news_f_html }}"; 

但这不起作用。我无法显示,例如:

console.log(news[1].news_title) //Note that I have 2 news in my db app
叶夫尼·M。

静态文件(js、css)对页面上下文一无所知。您需要将此上下文显式传递给您的 js 代码。render函数返回一个HttpResponse,默认情况下是纯文本,并且仅适用于模板。就是这样,Django 只将数据传递给news.html模板(以及像这样在其中调用的模板{% include "template.html"%}),而不是静态文件如果要将数据传递给 js 文件,则让您的视图返回JsonResponse,并让您的 js 代码通过 url 获取数据。既然你刚刚开始你的 Django 之旅,那么尝试以类似的方式做:

在你的news.html模板中写下这些行(这是你初始化变量的方式):

{# news.html #}
...
<script>
  var news = {{ news_f_html }}; // note that this assignment without quotes - "{{ news_f_html }}" will be just string variable
</script>
...

在这些行之后,使用将处理您的上下文的代码导入您的 js 文件。就是这样,js-code 从模板中获取了这些变量,并且已经可以使用它们。

{# news.html #}
...
<script>
  var news = {{ news_f_html|safe }}; // note that this assignment without quotes - "{{ news_f_html }}" will be just string variable
</script>
...

<script src="{% static 'path/to/your/js/code.js' %}"></script>

由于您已经在使用序列化程序(我认为这是 DRF,请参阅更新),因此将来可以使用Django Rest Framework 视图来创建 API。

更新:

因此,您正在使用Django 的核心序列化程序

在这种情况下,为了获得所需的结果,您需要更改视图,例如,如下所示:

def news(request):
    news_f = News.objects.all().order_by('-news_id') 
    news_f_html = []
    for instance in News.objects.all():  # it's not serialization, but extracting of the useful fields
        news_f_html.append({'pk': instance.pk, 'title': instance.news_title, 'body': instance.news_body})
    news_dic = {'news_f': news_f, 'ac_tab_n': 'ac_tab', 'news_f_html': news_f_html}
    return render(request, 'news.html', news_dic)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Django 模型中使用查询?

如何在for循环中使用Django模型?

如何在信号中使用Django模型继承?

如何在信号中使用Django模型继承?

如何在DJango中使用不同模型的外键

如何在 Django 中使用字典更新模型的表

如何在定制用户模型中使用django-guardian

如何在Django中使用模型的ID保存FileField

如何在Django中使用模型进行查询

如何在 Django 中使用嵌套对象创建模型

如何在Django中使用模型表单编辑对象?

如何在 Django 模型中使用数组字段?

如何在Django中使用其他模型的主键作为模型名称生成模型

如何在JavaScript代码中使用模型数据?

如何在Django的子模型字段中使用抽象模型字段值作为默认值?

如何在 Django 中使用其他模型獲取模型對象

如何在javascript / client-logic中使用Django变量?

如何在django中的javascript中使用json

如何在 django if 语句(模板)中使用 javascript 变量?

如何在JavaScript文件中使用Django变量?

如何在JavaScript中使用Django中的TextField?

如何在计算中使用存储在 django 模型中的数据,然后将计算结果存储在 django 模型字段中?

在使用子对象更新和检索模型实例时,如何在Django中使用memcache?

如何在 Django 模型中呈现存储的 Javascript 代码?

如何在Django模型中使id自动增加2?

如何在Django之外使用Django模型?

呈现HTML页面时如何在Django中使用与用户关联的模型

如何在 Django 中使用 select_related 或 prefetch_related 加入多个相关模型?

基础:如何在 Django Rest Framework 中使用 PATCH 方法用户模型