我只是租用VPS试图发布一个Django项目。在我的电脑的调试模式下运行正常,但是当我尝试在VPS中运行调试模式时出现错误:
Django Version: 1.8.5
Exception Type: SyntaxError
Exception Value:
invalid syntax (inbox.py, line 39)
Exception Location: /usr/lib/python3.4/importlib/__init__.py in import_module, line 109
Python Executable: /usr/bin/python3
Python Version: 3.4.3
Error during template rendering
In template /webapps/rusc/rusc/templates/base.html, error at line 66:
63 </div>
64
65 <div id="div_user">
66
{% include "usermenu.html" %}
67 </div>
68 </div>
在&#34; usermenu.html&#34;我有这个导致问题的负载
{% load notifications_tags %}
{% load inbox %}
如果我在&#34; base.html&#34;中加载它{%extends%}标记无效:
Django Version: 1.8.5
Exception Type: SyntaxError
Exception Value:
invalid syntax (inbox.py, line 39)
Exception Location: /usr/lib/python3.4/importlib/__init__.py in import_module, line 109
Python Executable: /usr/bin/python3
Python Version: 3.4.3
In template /webapps/rusc/rusc/templates/rusc.html, error at line 1
invalid syntax
1
{% extends "base.html" %}
2
3
4 {% block content %}
5 <br />
6 <br />
如果我在rusc.html上加载,我仍然有 SyntaxError 但没有附加html文件,只返回渲染:
Environment:
Request Method: GET
Request URL: http://xx.xxx.xx.xx:8000/rusc/
Django Version: 1.8.5
Python Version: 3.4.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_filters',
'django_tables2',
'django_messages',
'notifications',
'registration',
'autocomplete_light',
'post',
'etiqueta',
'recurs',
'usuari',
'buscador',
'cela',
'rusc.faq',
'micawber.contrib.mcdjango')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/webapps/rusc/rusc/views.py" in ruscView
24. return render(request,"rusc.html", {'celas':celas,'notifications': notif})
File "/usr/local/lib/python3.4/dist-packages/django/shortcuts.py" in render
67. template_name, context, request=request, using=using)
File "/usr/local/lib/python3.4/dist-packages/django/template/loader.py" in render_to_string
98. template = get_template(template_name, using=using)
File "/usr/local/lib/python3.4/dist-packages/django/template/loader.py" in get_template
35. return engine.get_template(template_name, dirs)
File "/usr/local/lib/python3.4/dist-packages/django/template/backends/django.py" in get_template
30. return Template(self.engine.get_template(template_name, dirs))
File "/usr/local/lib/python3.4/dist-packages/django/template/engine.py" in get_template
167. template, origin = self.find_template(template_name, dirs)
File "/usr/local/lib/python3.4/dist-packages/django/template/engine.py" in find_template
141. source, display_name = loader(name, dirs)
File "/usr/local/lib/python3.4/dist-packages/django/template/loaders/base.py" in __call__
13. return self.load_template(template_name, template_dirs)
File "/usr/local/lib/python3.4/dist-packages/django/template/loaders/base.py" in load_template
23. template = Template(source, origin, template_name, self.engine)
File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in __init__
190. self.nodelist = engine.compile_string(template_string, origin)
File "/usr/local/lib/python3.4/dist-packages/django/template/engine.py" in compile_string
261. return parser.parse()
File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in parse
341. compiled_result = compile_func(self, token)
File "/usr/local/lib/python3.4/dist-packages/django/template/loader_tags.py" in do_extends
210. nodelist = parser.parse()
File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in parse
341. compiled_result = compile_func(self, token)
File "/usr/local/lib/python3.4/dist-packages/django/template/defaulttags.py" in load
1159. lib = get_library(taglib)
File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in get_library
1392. lib = import_library(taglib_module)
File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in import_library
1331. mod = import_module(taglib_module)
File "/usr/lib/python3.4/importlib/__init__.py" in import_module
109. return _bootstrap._gcd_import(name[level:], package, level)
Exception Type: SyntaxError at /rusc/
Exception Value: invalid syntax (inbox.py, line 39)
我可以在哪里加载这些数据?
奇怪的是我在Windows和Ubuntu中安装了相同的项目并且工作正常,这个错误只出现在OVH的Ubuntu VPS中(据我所知)。
任何帮助都将不胜感激。
inbox.py 是Django-messages的文件: https://github.com/arneb/django-messages/blob/master/django_messages/templatetags/inbox.py
from django.template import Library, Node, TemplateSyntaxError
class InboxOutput(Node):
def __init__(self, varname=None):
self.varname = varname
def render(self, context):
try:
user = context['user']
count = user.received_messages.filter(read_at__isnull=True, recipient_deleted_at__isnull=True).count()
except (KeyError, AttributeError):
count = ''
if self.varname is not None:
context[self.varname] = count
return ""
else:
return "%s" % (count)
def do_print_inbox_count(parser, token):
"""
A templatetag to show the unread-count for a logged in user.
Returns the number of unread messages in the user's inbox.
Usage::
{% load inbox %}
{% inbox_count %}
{# or assign the value to a variable: #}
{% inbox_count as my_var %}
{{ my_var }}
"""
bits = token.contents.split()
if len(bits) > 1:
if len(bits) != 3:
raise TemplateSyntaxError("inbox_count tag takes either no arguments or exactly two arguments")
if bits[1] != 'as':
raise TemplateSyntaxError("first argument to inbox_count tag must be 'as'")
return InboxOutput(bits[2])
else:
return InboxOutput()
register = Library()
register.tag('inbox_count', do_print_inbox_count)
答案 0 :(得分:2)
问题似乎是指您的VPS上使用的django-messages应用程序版本。您正在使用python3.4版本,如果您只是使用pip install安装django_messages,那么您将面临旧的Exception语法问题(仅限39行):
raise TemplateSyntaxError, "first argument to inbox_count tag must be 'as'"
它已在主分支https://github.com/arneb/django-messages/commit/659a3dd710051f54e3edc1d76cdfb910d7d04c1a#diff-2006ff4f62d84a3bee25f8b1823d6a5fL39中更改,因此如果您尝试更新django-messages应用程序版本,您将摆脱SyntaxError问题。