在Django 2.0.2中的/ search /中的TemplateDoesNotExist

时间:2018-02-07 10:34:18

标签: python-3.x django-2.0

当我尝试执行该函数时,我得到(TemplateDoesNotExist at / search /) 我的模板文件夹位于C:\ Users \ Rafik \ Documents \ myproject \ env_mysite \ Scripts \ mysie \ books \ templates python代码运行正常,但它说TemplateDoesNotExist

  

views.py:

     

def搜索(请求):

error = False

if 'q' in request.GET:

    q = request.GET['q']

    if not q:

        error = True

    elif len(q) > 20:

        error = True

    else:

        books = Book.objects.filter(title__icontains=q)

        return render(request, 'search_results.html', {'books': books, 'query': q})

return render(request, 'search_form.html', {'error': error})

应用/ urls.py:

  

来自django.conf.urls import url

     

来自图书导入视图

     

urlpatterns = [

url(r'^search-form/$', views.search_form),
url(r'^search/$', views.search)
  

TEMPLATE settings.py

  

TEMPLATES = [

{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR,'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
  

1 个答案:

答案 0 :(得分:3)

我是作为作者的stackoverflow的新手,所以请原谅我没有在这里使用适当的标记。通过Django 2.0教程(更具体地说:在Tutorial03中,从loader.get_template()切换到shortcuts.render()之后),我遇到了同样的错误。以下解决方案最终证明对我有用:

  • 在我的settings.py的TEMPLATES部分中,DIRS仍为空列表,APP_DIRS设置为True。
  • 在render()语句中,指定模板时没有路径部分,例如渲染(请求,'index.html',上下文)
  • 模板文件必须直接位于app / templates目录中(不在/ app / templates / app中)

我的环境是在Windows 10(和cygwin)下使用CPython 3.6.4的Django 2.0.2。希望这会有所帮助。