【问题标题】:Python-Django: Cannot find templatePython-Django:找不到模板
【发布时间】:2014-11-03 02:34:39
【问题描述】:

我是 Python 和 Django 的新手,并且一直在尝试学习如何为我的网站制作注册表单。我正在关注本教程https://www.youtube.com/watch?v=Tam4IGrPESg。我已经完成了registration_success页面的所有工作。以下是我认为的相关代码:

settings.py

TEMPLATE_DIRS = (
    TEMPLATE_PATH + '/templates/',
    TEMPLATE_PATH + '/templates/registration',
)

urls.py

#registration
(r'^register/$', register_user),
(r'^registration_success/$', registration_success),

views.py

def register_user(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('registration_success')         
    args = {}
    args.update(csrf(request))
    print (args)
    args['form'] = UserCreationForm()

    return render_to_response('register.html',args)

def registration_success(request):
    return render_to_response('registration_success.html')

我得到的错误是这样的:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/register/registration_success
Using the URLconf defined in tut_1.urls, Django tried these URL patterns, in this order:
^$
^login/$
^logout/$
^register/$
^registration_success/$
^portal/
^static/(?P<path>.*)$
The current URL, registration/registration_success, didn't match any of these.

我不确定到底发生了什么。我注意到的是URL是:http://localhost:8000/register/registration_success。为什么是注册/注册_...?不应该是注册/注册成功吗?

提前致谢。

【问题讨论】:

  • 该错误不是找不到模板,而是找不到您请求的页面:即您的网址不匹配。消息很清楚,一次也没有提到模板。

标签: python django templates url


【解决方案1】:
return HttpResponseRedirect('registration_success') 

您正在重定向到相对于当前 url 的路径。这就解释了为什么您被路由到 /register/registration_success。

要解决这个问题,您需要使用根相对路径

return HttpResponseRedirect('/registration_success/') 

【讨论】:

  • 感谢您的回复。我尝试了你的建议,但我最终得到了一个循环。如果我错了,请纠正我 /registration_success/ 会调用registration_success函数并重复循环吗?老实说,我不知道我做了什么,但我没有更改我发布的任何代码,现在它可以工作了......不幸的是我不能说我做了什么......
猜你喜欢
  • 2018-01-02
  • 2012-07-10
  • 2015-03-14
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
相关资源
最近更新 更多