【问题标题】:Django: Templatetags doesn't work with mod_wsgiDjango:模板标签不适用于 mod_wsgi
【发布时间】:2016-05-26 20:17:47
【问题描述】:

一旦我完成并测试了一个模块,我想在生产服务器上部署我的应用程序。到目前为止,应用程序正在使用 Django 1.9.2 框架(使用 Python 3.5)在嵌入式服务器上工作。我在 Centos 7 上通过 Apache 通过 mod_wsgi 部署了 Django。 部署后我做了一些测试。似乎 Templatetags 无法正常工作,因为总是将“0”返回(或根本不计算?)到模板,而 mod_wsgi 正在使用中。即使我将任何常量放入模板标签(如下)并尝试将其返回模板,也同样适用,只是为了测试它是如何工作的。 我用同一台机器(Linux)做了完全相同的检查,但我使用了嵌入式服务器。在嵌入式服务器的情况下,所有信息都被正确传递和计算。 我认为这是与权限相关的问题。我仔细检查了一下,似乎所有文件访问权限都已正确设置。

<VirtualHost *:80>
        ServerName nid.example.com
        <Directory /home/nid/nid/nid>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>
        WSGIDaemonProcess nid python-path=/home/nid/nid:/home/nid/nid-venv/lib/python3.4/site-packages
        WSGIProcessGroup nid
        WSGIScriptAlias / /home/nid/nid/nid/wsgi.py
</VirtualHost>

模板标签:

from django import template
import datetime

register = template.Library()
@register.assignment_tag()
def count_expire_days(end_date, renew_date):
    last_valid_day = end_date
    first_renew_day = renew_date
    today = datetime.date.today()
    diff_last_day = last_valid_day - today
    diff_whole_period = last_valid_day - first_renew_day
    period = diff_whole_period.days
    expire_days = diff_last_day.days
    percentage = (expire_days/period)*100
    return int(percentage)

我在玩文件权限,但没有运气。 有什么问题?如何调试 Django 模板标签,以了解为什么这不起作用?

【问题讨论】:

  • 什么意思,模板标签不起作用?当你使用它们时会发生什么?你看到什么错误?另外,请出示您的模板和视图。
  • 是的,抱歉,我忘了提供所有必需的信息。请检查上面的描述。一般来说,应用程序可以正常工作,但这是使用 mod_wsgi 进行 Django 部署的问题。

标签: python django mod-wsgi


【解决方案1】:

这个问题很隐蔽。 我使用 Centos 7。默认情况下它运行 Python 2.7。即使我们安装了 Python 3.4(目前最新可用的 Centos 包)和所有周边包,还有更多工作要做。我发现 Django 显示它仍然使用 Python 2.7,而整个 virtualenv 是纯 Python 3.4。

根本原因:过时的 mod_wsgi Apache 模块。它的原始版本是 3.4,而最新版本(支持 Python 3)是 4.4.22。要解决此问题,您需要从源代码编译 mod_wsgi 并将其加载到 Apache 中。 更改后,应用程序按预期工作。所有值都计算正确。这不起作用的原因是 python 2.7 和 3.4 处理数据的方式不同。

灵感:running django python 3.4 on mod_wsgi with apache2

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 2017-11-07
    • 2019-01-19
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2014-09-21
    • 2014-03-20
    相关资源
    最近更新 更多