为什么当Django中的模型发生变化时模板仍然没有变化?

2024-09-26 04:58:34 发布

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

我的Django项目里面有学分制。 我想改变模板,如果用户没有足够的信用

models.py

class CreditSystem(models.Model):
    forUser = models.ForeignKey(User, on_delte=models.CASCADE, null=True, blank=False)
    credits = mdoels.IntegerField(null=True, blank=False)


views.py

def userPanel(request):
    credits = CreditSystem.objects.get(forUser=request.user)
    return render(request, 'user/panel.html', {'credit': credit.credit}

user/panel.html

{% if credit < 5 %}
<p>You have insufficient Credits</p>
{% else %}
<p> Welcome! </p>
{% endif %}

例如,现在我将用户信用值改为10(在管理面板)。 然后显示“欢迎“消息。 现在,如果我将当前用户信用更改为5,模板如何在不重新加载的情况下将消息更改为“您信用不足”?我可以用javascript来做(每秒执行一个请求),但是使用这种方法太麻烦了。
我需要使用django通道使其异步吗


Tags: 用户py模板falsetruemodelsrequesthtml
1条回答
网友
1楼 · 发布于 2024-09-26 04:58:34

编辑:在我写这个答案时,我只知道一件事,那就是客户端到服务器的请求Django Channels也许是回答OP问题的好方法


是的,不管怎样,如果你想调整显示给连接的用户的内容,你必须调用给你点数的视图。有两种方法,您确定了这两种方法:

  • 您可以重新加载页面,这样整个模板将再次呈现
  • 或者可以使用javascript调用一个返回信用数的视图(例如,get_credit_view返回一个json数组)。然后,根据js逻辑调整页面以适应用户(但是模板在服务器端只呈现一次)

相关问题 更多 >