django - 如何使用 json 和 django 将 HTML 代码插入数据库?
问题描述
我正在尝试将 HTML 模板代码直接添加到 django-rest-framework 中的数据库中。并希望使用 json 作为检索并添加 html 代码。我怎样才能做到这一点?
class AddHTML(models.Model):
template_name = models.CharField(max_length=50, default="")
HTML_code = models.TextField(default="")
def __str__(self):
return self.template_name
序列化程序.py
class AddHTMLSerializer(serializers.ModelSerializer):
class Meta:
model = AddHTML
fields = '__all__'
视图.py
class HTMLData(APIView):
def get(self, request, format=None):
html = AddHTML.objects.all()
serializer = AddHTMLSerializer(html, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = AddHTMLSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class HTMLDataDetail(APIView):
def get_object(self, id):
try:
return AddHTML.objects.get(id=id)
except AddHTML.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
def get(self, request, id, format=None):
html = self.get_object(id)
serializer = AddHTMLSerializer(html)
return Response(serializer.data)
def put(self, request, id, format=None):
html = self.get_object(id)
serializer = AddHTMLSerializer(html, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, id, format=None):
html = self.get_object(id)
html.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
在视图中,我应该做什么而不丢失任何 HTML 数据标签,我可以轻松地从数据库中保存和检索。
解决方案
存储和检索 HTML 应该不是问题,因为它只是作为文本存储,只需确保所有字符都正确转义。(即,\\
在您的 HTML 字符串中,而不是\
)
现在,通过模板渲染 HTML 有点棘手,但还不错。您必须使用 HTML 创建一个模板对象:
db_value = 'Put the HTML from database here'
db_template = Template(db_value)
db_context = Context({'variables': 'Anything you want passed to the template goes here'})
从那里,您可以使用db_template.render(db_context)
.
但是,您也可以使用 Django 模板系统和/或 JavaScript 将 HTML 字符串传递给预定义的模板并在该端处理渲染。
推荐阅读
- asp.net-core-mvc - ASP.NETCore 3.0 Dropdownlist 错误 - InvalidOperationException:没有“IEnumerable”类型的 ViewData 项
' 有钥匙 - python - Scip 与 Pyomo 接口的问题
- html - 如何修复我的 li 元素的样式,使其出现在同一行?
- python-3.x - 如何找出 WebDriverWait 是成功的?
- java - 在 Java 中将 Stream 转换为字符串
- javascript - 角度路由在手动刷新或直接输入 url 时进入主页
- java-11 - 无法在 gmaven-plugin 插件中加载 mojo 'execute'
- angular7 - Angular7 oidc 与 Identityserver4 的集成
- python - Matplotlib:y轴刻度上的图像网格不均匀
- azure - 如何在 Azure 中的密钥轮换后为存储 Blob 的客户端请求提供服务