我在我的django应用程序中使用rest框架来访问一些数据。
由于某些原因,我无法访问它。我没有错误消息,但数据没有显示。
我的观点是。
class TeamChartData(APIView):
queryset = MyUser.objects.all()
serializer_class = MyUserSerializer, #ProjectSerializer
permission_classes = []
http_method_names = ['get',]
def get_serializer_class(self):
return self.serializer_class
def get(self, request, format=None, *args, **kwargs):
cohesiveness_score = get_team_cohesivenss_score(self)
data = {
"cohesiveness_score":cohesiveness_score[0],
}
return Response(data)
我的Html:
{% extends 'base.html' %}
{% load static %}
{% block body %}
<div class="container paddingtop80 marginbottom30">
<div class="row">
{% if project.has_member_responses %}
<div class="col-8">
<div class="jumbotron greenback">
<h4>Welcome to the Project test "{{ project.name }}" Detail page</h4>
</div>
</div>
<div class="col-4">
<div class="jumbotron greenback">
<div class="inner-score">
<h6>Team Score</h6>
<h4>{{cohesiveness_score}}</h4>
</div>
</div>
</div>
{% else %}
<div class="col">
<div class="jumbotron greenback">
<h4>Welcome to the Project "{{ project.name }}" Detail page</h4>
</div>
</div>
{%endif%}
</div>
<!-- case 1 = if there is not team created or linked -->
{% if project.team_id == None %}
{% include "projectdetailtemp/noteamcreated.html" %}<
<!-- case 2 = if there is a team created but no team members -->
{% elif project.team_id and project.team_id.members.count == 0 %}
{% include "projectdetailtemp/teamnomember.html" %}<
<!-- any other situation -->
{% else %}
{% include "projectdetailtemp/other.html" %}
{% endif %}
{% if project.has_member_responses %}
{% include "survey/team_dashboard.html" %}
{% else %}
<div class="jumbotron redback">
We are still waiting for all members to answer the team questionnaire
</div>
{% endif %}
</div>
{% endblock%}
<script>
var endpoint = 'api/chart/data2'
$.ajax({
method: "GET",
url: endpoint,
success: function(data){
console.log(data)
cohesiveness_score = data.cohesiveness_score
}
})
</script>
当我转到我的端点时,我可以看到我试图访问的数据我猜问题不是来自view.py。我尝试访问的数据是:{{cohesiveness_score}}有人能帮我吗?
编辑:有问题的视图:
def TeamSelect(request):
#import pdb; pdb.set_trace()
if request.method == "POST":
select_form = EditSelectTeam(request.user, request.POST)
if select_form.is_valid():
data = select_form.cleaned_data['team_choice']
obj2 = Project.objects.filter(project_hr_admin=request.user)
obj3 = obj2.latest('id')
if obj3.team_id == None:
obj3.team_id = data
obj3.save()
obj4 = obj3.team_id
obj5 = obj4.members.all()
for i in obj5:
current_site = get_current_site(request)
message = render_to_string('acc_join_email.html', {
'user': i.first_name,
'domain':current_site.domain,
})
mail_subject = 'You have been invited to SoftScores.com please LogIn to get access to the app'
to_email = i.email
email = EmailMessage(mail_subject, message, to=[to_email])
email.send()
messages.success(request, 'test')
return HttpResponseRedirect(reverse('website:ProjectDetails', kwargs={'pk':obj3.id}))
else:
print('this project has already a team')
else:
print('Non Valid form')
else:
select_form = EditSelectTeam(request.user)
return render(request,'link_project.html',
{'select_form':select_form })
url:
url(r'^project/(?P<pk1>[0-9]+)/linkteam2/$', views.TeamSelect, name='team_select'),
链接:
<a href="{% url 'website:team_select' pk1=project.id %}" class="btn btn-secondary" role="button"><span class="fa fa-link"></span> Link an existing team</a>
发布于 2018-01-05 02:30:28
默认情况下,Django rest中的视图呈现类是JSONRenderer
。您需要将呈现类定义为HTML和模板名称。在此之后,将以HTML格式呈现yiur数据。
from rest_framework.renderers import TemplateHTMLRenderer
class TeamChartData(APIView):
queryset = MyUser.objects.all()
serializer_class = MyUserSerializer, #ProjectSerializer
permission_classes = []
http_method_names = ['get',]
renderer_classes = [TemplateHTMLRenderer]
template_name = 'template_name.html'
https://stackoverflow.com/questions/48097945
复制相似问题