django TemplateDoesNotExist at / login /

时间:2015-07-23 02:16:30

标签: django

我正在尝试使用此处的表单设置登录 -

http://stackoverflow.com/questions/31576801/django-login-exception-value-unicode-object-is-not-callable#31576801

点击登录后,我得到以下追溯 -

Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/datapi/core/views.py" in LoginRequest
  47.     return render_to_response('/',ctx,context_instance=RequestContext(request))
File "/usr/local/lib/python2.7/dist-packages/django/shortcuts.py" in render_to_response
  23.     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in render_to_string
  170.         t = get_template(template_name, dirs)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in get_template
  144.     template, origin = find_template(template_name, dirs)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in find_template
  136.     raise TemplateDoesNotExist(name)

Exception Type: TemplateDoesNotExist at /login/
Exception Value: /

这是我的观点 -

def LoginRequest(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            user = authenticate(email=email, password=password)
            if user is not None:
                login(request, user)
                return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
            else:
                return render_to_response('/', {'form': form}, context_instance=RequestContext(request))
        else:
            return render_to_response('/', {'form': form}, context_instance=RequestContext(request))
    else:
        form = LoginForm()
        return render_to_response('/', {'form': form}, context_instance=RequestContext(request))

我只能对模板进行成像,因为它不是模板。我正在尝试做的是让我的视图登录,然后返回我的根网址。

2 个答案:

答案 0 :(得分:1)

您需要在template_name中传递render_to_response。您没有这样做,而是传递url

render_to_response的基本签名:

render_to_response(template_name[, context][, context_instance][, content_type][, status][, dirs][, using])

这将使用给定的template字典呈现给定的context并返回带有该呈现文本的HttpResponse对象。

所以下面的陈述不应该是:

return render_to_response('/', {'form': form}, context_instance=RequestContext(request))

但是类似于:

return render_to_response('template_name_of_index_page', {'form': form}, context_instance=RequestContext(request))

答案 1 :(得分:0)

我不得不恢复以下视图 -

def LoginRequest(request):
    active = "index"
    message = ""
    if request.user.is_authenticated():
        return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
    else:
        if request.method == "POST":
            form = LoginForm(request.POST)
            if form.is_valid():
                username = form.cleaned_data['email']
                password = form.cleaned_data['password']
                user = authenticate(username=username,password=password)
                if user is not None and user.is_active:
                    login(request,user)
                    return HttpResponseRedirect('/dashboard')
                else:
                    message = "user and/or password incorrect"


    ctx = {'active':active, 'form': form}
    return render_to_response('index.html',ctx,context_instance=RequestContext(request))

现在没有问题。

相关问题