【问题标题】:Django-funky-sheets {% include hot_template %} causes permission denied errorDjango-funky-sheets {% include hot_template %} 导致权限被拒绝错误
【发布时间】:2019-06-06 14:10:22
【问题描述】:

我正在尝试实现 django-funky-sheets (https://pypi.org/project/django-funky-sheets/) 包,但在添加 {% include hot_template %} 标记后,我不断收到 Permission denied 错误。

我在安装和设置过程中做了以下事情:

pip install django-funky-sheets

settings.py

INSTALLED_APPS = [
    ...
    'funky_sheets',
    ...
]

urls.py

    path('adres/funky/create/', CreateFunkyView.as_view(), name='funky-create'),
    path('adres/funky/update/', UpdateFunkyView.as_view(), name='funky-update'),

views.py

class CreateFunkyView(HotView):
    model = Adres
    template_name = 'bierviltje/vilt_detail.html'
    prefix = 'table'
    succes_url = reverse_lazy('funky-update')
    fields = (
        'id',
        'adres_title',
        'm2',
    )

    hot_settings = {
        'contextMenu': 'true',
        'autoWrapRow': 'true',
        'rowHeaders': 'true',
        'contextMenu': 'true',
        'search': 'true',
        'licenseKey': 'non-commercial-and-evaluation',
    }

    def get_context_data(self, **kwargs):
        context = super(CreateFunkyView, self).get_context_data(**kwargs)

        context['vilt'] = self.model.vilt

class UpdateFunkyView(CreateFunkyView):
        template_name = 'bierviltje/vilt_detail.html'
        action = 'update'
        button_text = 'Update'

vilt_detail.html

...
<div class="row">
    {% include hot_template %}
</div>
...

我不断收到的错误消息是: [Errno 13] 权限被拒绝:'C:\Users\[username]\[project]\bierviltje\templates'

这是回溯:

Traceback (most recent call last):
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\core\handlers\base.py", line 156, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\core\handlers\base.py", line 154, in _get_response
    response = response.render()
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\response.py", line 106, in render
    self.content = self.rendered_content
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\response.py", line 83, in rendered_content
    content = template.render(context, self._request)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 171, in render
    return self._render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 937, in render
    bit = node.render_annotated(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 904, in render_annotated
    return self.render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 937, in render
    bit = node.render_annotated(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 904, in render_annotated
    return self.render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 937, in render
    bit = node.render_annotated(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\base.py", line 904, in render_annotated
    return self.render(context)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\loader_tags.py", line 176, in render
    template = context.template.engine.get_template(template_name)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\engine.py", line 144, in get_template
    template, origin = self.find_template(template_name)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\engine.py", line 126, in find_template
    template = loader.get_template(name, skip=skip)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\loaders\base.py", line 24, in get_template
    contents = self.get_contents(origin)
  File "C:\Users\chris\Envs\koka\lib\site-packages\django\template\loaders\filesystem.py", line 23, in get_contents
    with open(origin.name, encoding=self.engine.file_charset) as fp:
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\chris\\koka\\bierviltje\\templates'

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    我自己对很多这些东西都很陌生。但是,我一直在玩 django-funky-sheets 一段时间,也遇到了和你一样的错误。

    我解决它的方法是在我的应用程序目录中的相关模板和模板标签文件夹下重新创建必要的文件。

    我基本上使用了 GitHub 文件中的内容:https://github.com/trco/django-funky-sheets/tree/master/funky_sheets

    例如,我在以下位置添加一个新文件:

    • Project/app/templatetags/app/ 称为 funky_sheets_tags.py
    • Project/app/templates/app/ 调用 hot.html 和 errors.html

    然后我会像引用任何其他模板一样引用模板(取决于您在核心 settings.py 中定义静态 URL 的方式)。对我来说,这看起来像 {% include "app/hot.html" %}。

    确保将 hot.html 文件中的 {% include errors_template %} 更改为 {% include "app/errors.html" %}。

    我知道这不是最实用的解决方案,但它确实有效,而且我发现在尝试将掌上电脑与更复杂的视图合并时了解模板的工作原理很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 2013-03-03
      相关资源
      最近更新 更多