【发布时间】:2019-04-24 10:00:17
【问题描述】:
我正在尝试在我的 django 项目中第一次使用cookiecutter 来创建项目骨架。
在我的cookiecutter.project_slug 中,我有一个 base.py 设置文件,最后有这部分:
import cookiecutter
{% if cookiecutter.use_celery == 'y' %}
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_IGNORE_RESULT = False
CELERY_TASK_TRACK_STARTED = True
# Add a one-minute timeout to all Celery tasks.
CELERYD_TASK_SOFT_TIME_LIMIT = 60
{% endif %}
但似乎 Django 不喜欢这部分的语法:invalid syntax error
你知道我怎样才能为上面的这部分写一个好的语法吗?
谢谢!
【问题讨论】:
-
我猜你可能忘记了 if 标签末尾的 '-' {% if -%} {%- endif %}
-
@HigorRossato 添加
-不行 ;) -
你正在运行什么命令来提供
invalid syntax error?{% if %}标签位于 cookiecutter 渲染的 jinja 模板中,以生成实际的base.py文件。你不应该在 Python 中运行模板,而且我认为模板不需要import cookiecutter。 -
@Alasdair 我正在尝试通过 sphinx_doc 生成 html doc 文件,
make html给出的问题是:There is a syntax error in your configuration file: invalid syntax (base.py, line 238) Did you change the syntax from 2.x to 3.x? Makefile:58: recipe for target 'html' failed。问题是指向这个 celery 部分,我的 Pycharm 根据错误的语法也给了我一个错误。 -
目前还不清楚您要做什么。您是要在 sphinx 中记录项目骨架,还是您从中创建的实际项目?如果您逐步解释为达到这一点所做的工作,这可能会有所帮助。
base.py是否包含其他{% if cookiecutter.... %}块?如果base.py是一个模板,那么它并不意味着是一个有效的 Python 文件,所以你会期望 PyCharm 出错。
标签: django cookiecutter-django cookiecutter