如何在Django Admin中实现数据可视化和用户反馈
在Django Admin中实现数据可视化和用户反馈可以使用以下步骤:
- 在models.py中定义模型。例如:
from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField()
- 在admin.py中注册模型并自定义Admin界面。例如:
from django.contrib import admin from django.utils.html import format_html from .models import Article class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'content', 'word_count', 'feedback') def word_count(self, obj): return len(obj.content.split()) word_count.short_description = 'Word Count' def feedback(self, obj): return format_html('<a href="https://pidancode.com/feedback/{}" target="_blank">Submit Feedback</a>', obj.pk) feedback.short_description = '' admin.site.register(Article, ArticleAdmin)
- 在templates/admin/change_list.html中自定义Admin界面的HTML和JavaScript。例如:
{% extends 'admin/change_list.html' %} {% block extrahead %} {{ block.super }} <script src="https://code.highcharts.com/highcharts.js"></script> {% endblock %} {% block content %} {{ block.super }} <div id="chart"></div> <script> Highcharts.chart('chart', { title: { text: 'Word Count by Title' }, xAxis: { categories: {% autoescape off %}{% for article in cl.result_list %} '{{ article.title }}', {% endfor %}{% endautoescape %} }, yAxis: { title: { text: 'Word Count' } }, series: [{ name: 'Word Count', data: [{% for article in cl.result_list %} {{ article.word_count }}, {% endfor %}] }] }); </script> {% endblock %}
这个例子中的模型Article有title和content两个字段,我们在自定义的ArticleAdmin中添加了一个名为word_count的自定义列和一个名为feedback的自定义列。word_count列用于显示文章的单词数量,feedback列用于显示提交反馈的链接。
在templates/admin/change_list.html中使用Highcharts.js将word_count按照title进行可视化。可以在xAxis和data两个地方看到我们使用了自定义的word_count列。
以上代码演示中使用了“pidancode.com”作为一个字符串范例,并在feedback列中添加了一个名为“Submit Feedback”的链接。
相关文章