You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目访问根路径触发TemplateDoesNotExist错误,请求协助解决

Django模板找不到(TemplateDoesNotExist)问题排查与解决

项目结构

├── manage.py
├── myProjet
│   ├── __init__.py
│   ├── settings.py
│   ├── templates
│   ├── urls.py
│   ├── wsgi.py
│   └── wsgi.pyc
├── app1
├── templates

settings.py相关配置

BASE_DIR =  os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app1',
]


TEMPLATES = [
    {
       'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['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',
            ],
        },
    },
]

触发错误的视图函数

def SignupPage(request):
    if request.method=='POST':
        uname=request.POST.get('username')
        email=request.POST.get('email')
        pass1=request.POST.get('password1')
        pass2=request.POST.get('password2')

        if pass1!=pass2:
            return HttpResponse("Your password and confrom password are not Same!!")
        else:
            my_user=User.objects.create_user(uname,email,pass1)
            my_user.save()
            return redirect('login')

    return render (request,'signup.html')

错误详情

TemplateDoesNotExist at /
signup.html
Request Method: GET
Request URL:    http://127.0.0.1:8000/
Django Version: 4.1.6
Exception Type: TemplateDoesNotExist
Exception Value:    
signup.html
Exception Location: /home/myPC/myProject/my_env/lib/python3.8/site-packages/django/template/loader.py, line 19, in get_template
Raised during:  app1.views.SignupPage
Python Executable:  /home//myProject/my_env/bin/python
Python Version: 3.8.10
Python Path:    
['/home/myPC/myProject/pmTools_V1',
 '/usr/lib/python38.zip',
 '/usr/lib/python3.8',
 '/usr/lib/python3.8/lib-dynload',
 '/home/myPC/myProject/my_env/lib/python3.8/site-packages']

解决步骤

1. 修正模板目录的绝对路径配置

当前TEMPLATES里的DIRS使用相对路径'templates',可能因运行环境工作目录问题导致路径解析错误。修改为基于BASE_DIR的绝对路径:

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',
            ],
        },
    },
]

2. 确认模板文件的位置

两种可选方案:

  • 方案一:使用根目录templates
    确保signup.html文件放在项目根目录的templates文件夹内(与manage.py同级的templates)。
  • 方案二:使用app内的模板目录
    在app1目录下创建templates/app1文件夹(二级目录需与app同名),将signup.html放入其中,然后修改视图的渲染路径:
    return render(request, 'app1/signup.html')
    

3. 检查拼写与大小写

  • 确认模板文件名是signup.html,无拼写错误(如漏字母、大小写不一致,Linux系统对文件名大小写敏感)。
  • 检查项目结构中的myProjet是否为笔误(应为myProject),统一命名可避免潜在路径问题。

4. 清理缓存并重启服务

运行以下命令清理Django缓存,再重启开发服务器:

python manage.py clearcache

之后重新启动服务:python manage.py runserver

内容的提问来源于stack exchange,提问作者iuatsj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:50:37