对Django Context的更改未在模板中显示

时间:2016-05-25 06:22:08

标签: python django templates caching mod-wsgi

我有一个模板,其中包含从我在视图中创建的Context中打印的变量。它已经完美地工作了几个月。

我在上下文中添加了一些新变量,但它们不会显示在模板中。

当我在本地运行Django项目时,如果我在上下文中的两个变量之间删除逗号,我会收到错误,如预期的那样。然后,如果我添加逗号,则新变量将在模板中。但是,当我将更改推送到Openshift时,新变量永远不会出现。实际上,如果我删除一些现有变量,模板仍然会像在那里一样呈现​​。

我在浏览器中清除了缓存。没有解决它。我没有在Django中使用缓存(在settings.py中搜索'cache'显示没有命中)。

显然,有些东西在某处缓存,但我无法弄清楚在哪里。由于我在本地运行时偶尔会在浏览器中显示更改,因此我确信python代码中没有任何语法错误。以下是上下文列表:

        context = {
         'slug': 'Admin Home .'
        , 'players': len(players)
        , 'paid': totalPaid
        , 'unpaid': len(unpaid)
        , 'monday': monday
        , 'tuesday': tuesday
        , 'wednesday': wednesday
        , 'donations': donations
        , 'ssmall': ssmall
        , 'smedium': smedium
        , 'slarge': slarge
        , 'sxl': sxl
        , 'sxxl': sxxl
        , 'page': page
    }

以下是未在模板中显示的其中一个变量的示例:

    Large: {{slarge}}

slarge变量有一个值。我通过运行shell中的一些代码来检查它,就像我上面说的那样,偶尔会出现在渲染页面上。

我还更改了head部分中的页面标题,只要变量在页面上正确填充,这些更改只会偶尔出现。

从我所看到的,听起来像Openshift使用的Apache和/或mod_wsgi是缓存某些东西,但我不知道如何修复它。我已经在Openshift中重新启动了应用程序,但这还没有解决它。

我感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

通常,在执行HTTP请求时不会缓存HTML。您的导航器将缓存的内容是CSS,javascript,图像等。在请求网页时,导航器始终呈现其收到的HTML。

我使用nginx和django运行一个网站,根据经验我可以告诉你,大多数时候在更改应用程序(Python文件)时,有必要重新启动django 。 (这可能是django中的一个设置)

除非您在模板中设置了ca缓存(需要许多设置),否则模板的任何修改都将自动在您的网站中呈现。默认情况下,django不会缓存模板,并且每次请求时都会处理它们。

Django是你的框架,apache是​​你的服务器。要使您的网站正常工作,必须有两个守护进程,一个用于apache,一个用于django。

重新启动apache不会重新启动django应用程序的代码。您需要做的是重新启动运行django框架的守护进程。

当您在本地运行代码时,您的代码按预期工作,因为每次使用命令python manage.py runserver..

时都会重新加载django框架

答案 1 :(得分:0)

我应该提到,这是我的第一个Django项目。

我在一个类的get部分而不是post部分进行了所有这些更改,它应该在post部分中。