Skip to main content
 首页 » 编程设计

python之django 模板不存在

2025年05月04日33zhwl

我想做一个注册页面,当用户点击注册时,它会检查两个密码是否相同,如果不相同,在“确认密码”后给出错误信息。

但是当我在 views.py 中调用“return render(request, reverse("accounts:signup"), {'form': signup_form}) ”时,它显示错误,回溯是:

Environment: 
 
Request Method: POST 
Request URL: http://127.0.0.1:8000/accounts/signup_post/ 
 
Django Version: 1.7 
Python Version: 2.7.5 
Installed Applications: 
('django.contrib.admin', 
 'django.contrib.auth', 
 'django.contrib.contenttypes', 
 'django.contrib.sessions', 
 'django.contrib.messages', 
 'django.contrib.staticfiles', 
 'accounts') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
 'django.middleware.common.CommonMiddleware', 
 'django.middleware.csrf.CsrfViewMiddleware', 
 'django.contrib.auth.middleware.AuthenticationMiddleware', 
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
 'django.contrib.messages.middleware.MessageMiddleware', 
 'django.middleware.clickjacking.XFrameOptionsMiddleware') 
 
Template Loader Error: 
Django tried loading these templates, in this order: 
Using loader django.template.loaders.filesystem.Loader: 
Using loader django.template.loaders.app_directories.Loader: 
 
Traceback: 
File "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/Users/feizhao/dropbox/nahan/accounts/views.py" in signup_post 
  64.     return render(request, reverse("accounts:signup"), {'form': signup_form}) 
File "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/shortcuts.py" in render 
  48.     return HttpResponse(loader.render_to_string(*args, **kwargs), 
File "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/template/loader.py" in render_to_string 
  170.         t = get_template(template_name, dirs) 
File "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/template/loader.py" in get_template 
  144.     template, origin = find_template(template_name, dirs) 
File "/Users/feizhao/.virtualenvs/nahan/lib/python2.7/site-packages/django/template/loader.py" in find_template 
  136.     raise TemplateDoesNotExist(name) 
 
Exception Type: TemplateDoesNotExist at /accounts/signup_post/ 
Exception Value: /accounts/signup/ 

我的帐户应用程序如下所示:

$ tree -L 3 accounts 
accounts 
├── __init__.py 
├── admin.py 
├── forms.py 
├── locale 
│   └── zh_CN 
├── migrations 
│   ├── 0001_initial.py 
│   ├── __init__.py 
├── models.py 
├── static 
│   └── accounts 
│       └── login.css 
├── templates 
│   └── accounts 
│       ├── base.html 
│       ├── login.html 
│       └── signup.html 
├── tests.py 
├── urls.py 
├── views.py 

urls.py:

urlpatterns = patterns( 
    '', 
    url(r'^accounts/', include('accounts.urls', namespace="accounts")), 
    url(r'^admin/', include(admin.site.urls)), 
) 

账户/urls.py:

urlpatterns = patterns( 
    '', 
    url(r'^login/$', views.login, name='login'), 
    url(r'^signup/$', views.signup, name='signup'), 
    url(r'^login_post/$', views.login_post, name='login_post'), 
    url(r'^signup_post/$', views.signup_post, name='signup_post'), 
) 

views.py 中的 signup_post 函数:

def signup_post(request): 
    if request.method == 'POST': 
        signup_form = forms.SignupForm(request.POST) 
 
        if signup_form.is_valid(): 
            signup_info = signup_form.cleaned_data 
            username = signup_info['username'] 
            email = signup_info['email'] 
            password = signup_info['password_1'] 
            user = User.objects.create_user( 
                username=username, 
                email=email, 
                password=password) 
            user.save() 
 
    else: 
        signup_form = forms.SignupForm() 
 
    return render(request, reverse("accounts:signup"), {'form': signup_form}) 

我已阅读 Django TemplateDoesNotExist和其他类似的问题,但没有帮助!

ps:我问过another question关于注册,也许有用。

请您参考如下方法:

这里的问题是

reverse("accounts:signup") 

返回一个 url,见这里(https://docs.djangoproject.com/en/1.7/ref/urlresolvers/#reverse),而你需要一个模板路径,所以你应该返回:

return render(request, 'accounts/signup.html', {'form': signup_form})