为什么直接在MySQL中更改数据后不刷新页面内容?

时间:2016-01-03 16:44:30

标签: mysql django caching nginx uwsgi

我已成功使用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})

博客/ index.html中

     {{ timetest }}

2 个答案:

答案 0 :(得分:2)

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})

答案 1 :(得分:1)

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

如果你移动

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

进入视图功能,将在每个请求中从数据库中提取数据,而不仅仅是一次。