【问题标题】:Why content of page is not refreshed after changing data in MySQL directly?为什么直接更改 MySQL 中的数据后页面内容不刷新?
【发布时间】:2016-04-07 08:19:40
【问题描述】:

我已经使用DjangoNginxuWSGIMySQL 成功启动了一个项目。

Django从MySQL获取数据并渲染到页面,但是当我在MySQL中更改数据时,即使刷新几次也不会在页面上显示更改的数据。

这个问题来自于研究 Django 缓存。 我不知道如何测试Django缓存是否有效?

    uwsgi:
    [uwsgi]
    vhost = false
    plugins = python
    socket = 127.0.0.1:8444
    master = true
    enable-threads = true
    workers = 1
    wsgi-file = project0/wsgi.py
    chdir = /home/www/project0
    touch-reload=/home/www/project0/reload

views.py

    from django.shortcuts import render
    from apps.blog.models import Timetest
    timetest=Timetest.objects.get(id=1)

    def index(req):
        content="welcome"
        return render(req,"blog/index.html",{"timetest":timetest})

blog/index.html

     {{ timetest }}

【问题讨论】:

    标签: mysql django caching nginx uwsgi


    【解决方案1】:

    timetest=Timetest.objects.get(id=1) 移动到您的 index 函数中

    def index(req):
        content = "welcome"
        timetest = Timetest.objects.get(id=1)
        return render(req, "blog/index.html", {"timetest": timetest})
    

    【讨论】:

    • 非常感谢您的帮助! @起亚
    【解决方案2】:

    使用 WSGI,应用程序代码将在第一次请求或 wsgi 服务器启动时加载,因此放置在视图函数之外的所有代码(或在视图之外执行的其他函数)将在每个服务器上执行一次,并且不会页面刷新后再次执行。因此,您的 timetest 变量将被填充一次,并且它的内容将在请求之间保留(它实际上是在首次使用时填充了数据,但这并不重要)。

    如果你移动线

    timetest=Timetest.objects.get(id=1)
    

    进入视图函数,每次请求都会从数据库中获取数据,而不是一次。

    【讨论】:

    • 非常感谢您的帮助! !!@GwynBleidD
    猜你喜欢
    • 2019-06-03
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2011-04-08
    • 2017-05-14
    • 2020-07-28
    • 2016-08-09
    相关资源
    最近更新 更多