简体   繁体   English

/ app /处的OSError为什么会发生这种奇怪的错误?

[英]OSError at /app/ Why does such a strange error happen?

I got an error: 我收到一个错误:

OSError at /app/ / app /中的OSError

[Errno 63] File name too long: "/Users/xxx/testapp/templates/jinja2/{'items': [{'---': '---', 'A': 'a', 'B': 'b', 'C: 'c', 'D': 'd'}]} [Errno 63]文件名太长:“ / Users / xxx / testapp / templates / jinja2 / {'items”:[{'---':'---','A':'a','B ':'b','C:'c','D':'d'}]​​}

I wanna embed json_dict of json_parse method's result in views.py to index.html . 我想将json_dict方法的结果的json_dict嵌入到index.html views.py中。 I wrote in views.py like 我在views.py写道

from django.shortcuts import render
import json

def index(request):
    f = open('./data/data.json', 'r')
    json_dict = json.load(f)
    return render('./index.html',json_dict)

I wrote in index.html like 我在index.html中这样写

<html>
 <head>
 <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.jquery.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.js"></script>
 <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.css">
 </head>
 <body>
    <select id="mainDD" data-placeholder="Choose" class="chzn-select" style="width:600px;">
    {% for k, v in json_dict.items %}
            <option>{{ v }}</option>
    {% endfor %}
    </select>
  </body>
</html>

json_dict has dictionary of {'items': [{'---': '---' ~~~ .I really cannot understand why I cannot send json_dict to index.html . json_dict{'items': [{'---': '---' ~~~字典。我真的不明白为什么我不能将json_dict发送到index.html Am I wrong to use render method? 使用渲染方法会出错吗? How can I fix this? 我怎样才能解决这个问题?

urls.py of app(child app) has views.py&index.html is 应用程序(子应用程序)的urls.py具有views.py&index.html是

from django.conf.urls import url
from . import views


urlpatterns = [
    url(r'^$', views.index, name='index'),
]

urls.py of parent app is 父应用的urls.py是

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^app/', include('app.urls')),
]

Traceback is 追溯是

Traceback:

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/xxx/testapp/app/views.py" in index
  8.     return render('./index.html',json_dict)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/shortcuts.py" in render
  30.     content = loader.render_to_string(template_name, context, request, using=using)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py" in render_to_string
  67.         template = get_template(template_name, using=using)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py" in get_template
  21.             return engine.get_template(template_name)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/backends/django.py" in get_template
  39.             return Template(self.engine.get_template(template_name), self)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/engine.py" in get_template
  162.         template, origin = self.find_template(template_name)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/engine.py" in find_template
  136.                         name, template_dirs=dirs, skip=skip,

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/loaders/base.py" in get_template
  38.                 contents = self.get_contents(origin)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/loaders/filesystem.py" in get_contents
  28.             with io.open(origin.name, encoding=self.engine.file_charset) as fp:

Exception Type: OSError at /app/
Exception Value: [Errno 63] File name too long: "/Users/xxx/testapp/templates/jinja2/{'items': [{'---': '---', ‘A’: ‘a’, ‘B’: ‘b’, ‘C: ‘c’, ‘D’: ‘d’}]}

After editing by an answer,I got an error TypeError at /app/ init () got an unexpected keyword argument 'match_extension' . 通过答案进行编辑后,我在/ app / init ()处收到错误TypeError,得到了意外的关键字参数'match_extension'。 Traceback says Traceback: 追溯说追溯:

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py" in getitem 65. return self._engines[alias] getitem 65中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py”。return self._engines [alias]

During handling of the above exception ('django'), another exception occurred: 在处理上述异常(“ django”)期间,发生了另一个异常:

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner 41. response = get_response(request) 内部文件41中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/exception.py”。response = get_response(request)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) _get_response 187中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/base.py”。response = self.process_exception_by_middleware(e,请求)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) _get_response 185中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/core/handlers/base.py”。response = wraped_callback(request,* callback_args,** callback_kwargs)

File "/Users/xxx/testapp/app/views.py" in index 13. return render(request, 'jinja2/index.html', {'json_dict': json_dict}) 索引13中的文件“ /Users/xxx/testapp/app/views.py”。return render(request,'jinja2 / index.html',{'json_dict':json_dict})

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/shortcuts.py" in render 30. content = loader.render_to_string(template_name, context, request, using=using) 渲染30中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/shortcuts.py”。content = loader.render_to_string(template_name,context,request,using = using)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py" in render_to_string 67. template = get_template(template_name, using=using) render_to_string 67中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py”。template = get_template(template_name,using = using)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py" in get_template 18. engines = _engine_list(using) get_template 18中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py”。engine = _engine_list(使用)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py" in _engine_list 72. return engines.all() if using is None else [engines[using]] _engine_list 72中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/loader.py”。如果使用,则返回engine.all()其他[engines [using]]

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py" in all 89. return [self[alias] for alias in self] 全部89个文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py”。返回[self [alias]为self中的别名]

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py" in 89. return [self[alias] for alias in self] 89中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py”。返回[self [alias]为self中的别名]

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py" in getitem 80. engine = engine_cls(params) getitem 80中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/utils.py”。engine = engine_cls(params)

File "/Users/xxx/myenv/lib/python3.5/site-packages/django/template/backends/django.py" in init 32. self.engine = Engine(self.dirs, self.app_dirs, **options) 初始化 32中的文件“ /Users/xxx/myenv/lib/python3.5/site-packages/django/template/backends/django.py”。self.engine = Engine(self.dirs,self.app_dirs,** options )

Exception Type: TypeError at /app/ Exception Value: init () got an unexpected keyword argument 'match_extension' 异常类型:/ app /处的TypeError异常值: init ()获得了意外的关键字参数'match_extension'

Your call to render() is wrong, try this : 您对render()调用是错误的,请尝试以下操作:

def index(request):
    with open('./data/data.json', 'r') as f:
        json_dict = json.loads(f.read())
    return render(request, 'index.html', {'json_dict': json_dict})

Everything is in the doc : 一切都在文档中:

https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/#render https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/#render

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM