dan*_*ana 3 django variables templates response view
我正在制作一些视图函数来计算社区中一个用户的排名.我的问题是,我想在每个用户的个人资料中显示传感器的级别,我不知道如何,因为我没有;请求和render_to_response(因为我猜不需要他们)我的代码:
def calculate_questions_vote(request):
useranswer = Answer.objects.filter (answer_by = request.user)
positive_votes = VoteUpAnswer.objects.filter(answer = useranswer)
negative_votes = VoteDownAnswer.objects.filter(answer = useranswer)
question_vote_rank = sum(positive_votes) - sum(negative_votes.count)
return question_vote_rank
def calculate_replies(request):
the_new = News.objects.filter(created_by = request.user)
reply = Reply.objects.filter(reply_to = the_new)
reply_rank = sum(reply)
return reply_rank
def calculate_votes(request):
the_new = News.objects.filter(created_by = request.user)
vote = Vote.objects.filter(voted = the_new)
vote_rank = sum(vote)
return vote_rank
def personal_rank(request):
personal_rank = question_vote_rank + reply_rank + vote_rank
return personal_rank
Run Code Online (Sandbox Code Playgroud)
在UserProfiles中:
user = request.user
personal_rank = calculate_questions_vote(user) + calculate_replies(user) + personal_rank(user)
Run Code Online (Sandbox Code Playgroud)
但我的错误是:
错误绑定参数0 - 可能不支持的类型.
mt方法是否正确?我应该如何在profile_view def中调用rank函数?
谢谢!
你可以在你的视图中调用该函数,rank = personal_rank(reuest.user)
然后添加rank
到你的上下文中.
我不会把这个函数称为"view"函数,因为它们不处理请求,也不会返回HttoResponce; 它们是更"辅助"的功能,如果它们处理单独的实体(例如,新闻和投票),也不属于模型.他们的下降地点就是例如.utils.py
.您可以从中导入它们,views.py
并以用户作为参数调用它们(如果它是实际用户的话request.user
).
有意义的是你无法request
从任何地方访问,因为这会迫使你更多地保持类似mvc的设计,如果你需要在某个地方请求从原始视图函数传递它!您应该将最后一个功能更改为:
def personal_rank(user):
personal_rank = calculate_questions_vote(user) + \
calculate_replies(user) + \
calculate_votes(user)
return personl_rank
Run Code Online (Sandbox Code Playgroud)
如果你有类似的东西,你也可以将这最后一个函数添加到User或UserProfile模型类,然后调用eg.my_user.personal_rank()
或my_user.get_profile().personal_rank()
.
归档时间: |
|
查看次数: |
1393 次 |
最近记录: |