我收到以下错误:
OSError at /index/
[Errno 22] Invalid argument: 'C:\\Users\\username\\PycharmProjects\\DjangoTestS\\templates\\<django.template.backends.django.Template object at 0x00000262E5F2F2B0>'
我相信这是因为我的django代码无法找到我的模板文件。在django中获取模板的代码如下:
index_model = loader.get_template('index.html')
我的模板字典如下:
'DIRS': [os.path.join(BASE_DIR, 'templates'),
'C:\\Users\\username\\PycharmProjects\\DjangoTestS',],
我尝试的类似问题的解决方案:
将项目位置硬编码到模板dict中。最初这是一种通常应该找到任何项目的模板文件夹的方式,但这不起作用。硬编码方式也不起作用。
pycharm shell帮助器更改,将路径元素硬编码到pycharm projects文件夹。也没用。
根据要求,以下是导致错误的视图: def table_view(request):
ip_address = get_client_ip(request)
browser = request.META['HTTP_USER_AGENT']
cur_visit = models.visit()
cur_visit.ip_address = ip_address
cur_visit.browser = browser
cur_visit.save()
index_model = loader.get_template('index.html')
all_visitors = models.visit.objects.all()
context = {'all_visitors': all_visitors}
return render(request, index_model, context)
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
答案 0 :(得分:0)
如果您的模板存储在名为template_dir
的目录中,则可以将代码修改为'DIRS':[os.path.join(BASE_DIR,'template_dir')]
。在您的代码中,您已使用templates
加入了项目目录路径。哪个(目录)可能不存在。
get_template
函数返回Template
对象,该对象不适合render
的函数模板,它(render
)采用模板名称template.html
直接
答案 1 :(得分:0)
我遇到了同样的错误:
/ url_path /处的OSError
[错误22]参数无效:
那仅仅是因为渲染时的参数顺序。这引发了错误:
random.choice
这是没有错误的:
def contact(request):
context = locals()
template = 'contact.html',
return render(request, context, template)
尝试维护项目中的顺序。