如何在Djang中通过视图返回不同格式类型的表数据

2024-04-20 13:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的看法,其中返回的数据三个不同的模式员工,证明和技能,它是完美的工作。你知道吗

视图.py

@page_template("app/profession.html") # just add this decorator
def profile(request, template="app/profession.html",
extra_context=None):
context = {
    'employ_V': Employees.objects.get(id = 45),
    'testim_V':Testimonial.objects.get(id = 45),
    'skills_V':Skills.objects.filter(id = 45),
}
if extra_context is not None:
    context.update(extra_context)
return render_to_response(template, context,
    context_instance=RequestContext(request))

如果您看到,只有一个记录将为员工和推荐模型返回(注意对象。获取()在查询中) 而Skills模型有不止一条记录(它返回超过5行的id、skill、order字段)。你知道吗

是否可以使用与Json格式相同的视图将技能以及员工和推荐信息返回到我的模板(纯文本和Json)? 或者我应该使用单独的视图以Json格式为Skills模型返回数据吗? 在这种情况下最好的方法是什么。你知道吗

在另一个技能视图中——我可以成功地以JSON格式获得结果——为此,我使用了customer serializer和JsonResponse。你知道吗


Tags: 数据模型视图idjsonappobjects格式
1条回答
网友
1楼 · 发布于 2024-04-20 13:36:09

您可以使用queryset中的Djangovalues,但是如果您需要特殊的转换(比如图像的缩略图等等),请添加到modelas_dict方法中

class YourModel(models.Model):
    # here your fields

    def as_dict(self):
        context = {
            'pk': self.id,
            'name': self.name,
            # ...
        }

        return context

那么在你看来

# import section 
from django.utils.safestring import mark_safe
# ...


@page_template("app/profession.html") # just add this decorator
def profile(request, template="app/profession.html", extra_context=None):

    employ_v_obj = Employees.objects.get(id=45)
    testim_v_obj = Testimonial.objects.get(id=45)
    skills_v_qs = Skills.objects.filter(id=45)

    skills_v_json_list = [obj.as_dict() for obj in skills_v_qs]

    context = {
        'employ_V': employ_v_obj,
        'testim_V': testim_v_obj,
    }

    context['skills_V_json'] = mark_safe(json.dumps(skills_v_json_list, ensure_ascii=False))

    if extra_context is not None:
        context.update(extra_context)

    return render_to_response(template, context, context_instance=RequestContext(request))

相关问题 更多 >