获取Django函数返回并呈现HTML页面

时间:2016-09-27 10:27:11

标签: python django

我有一个功能(在count内),如果用户classis_authenticate()返回True,但它没有返回 HTML 我以为会这样。

class LoginDetails:
    def __init__(self, request):
        self.request = request
        self.template = 'myapp/errorpage.html'
        self.context = {}

    def user_is_logged_in(self):
        if self.request.user.is_authenticated() and self.request.user.is_active:
            print 'USER IS AUTHENTICATED!'
            return True
        print 'USER IS NOT AUTHENTICATED!'
        return render(self.request, self.template, self.context)

views.py

def authUsers(request):
    logindetails = LoginDetails(request).user_is_logged_in()
    return HttpResponse("HTML Error Page Not Rendered")

如果没有我在 views.py 中进行显示/渲染错误页面,该怎么办?我想要实现的目标是Stackoverflow的is_active

1 个答案:

答案 0 :(得分:0)

首先,你的课真的是多余的,调用它需要一行,修改你的视图也是一行

from django.http import HttpResponse, Http404

def authUsers(request):
   if request.user.is_authenticated() and request.user.is_active:
       raise Http404
   else :
       return render(...)

使用该类只会使问题复杂化。但如果你真的想,你可以这样修改它:

class LoginDetails:
    def __init__(self, request):
        self.request = request
        self.template = 'myapp/errorpage.html'
        self.context = {}

    def user_is_logged_in(self):
        if self.request.user.is_authenticated() and self.request.user.is_active:
            return False

        return render(self.request, self.template, self.context)


def authUsers(request):
    logindetails = LoginDetails(request).user_is_logged_in()
    if not logindetails:
        return HttpResponse("HTML Error Page Not Rendered")
    else:
        return logindetails