想改善我的观点

时间:2011-12-15 14:43:44

标签: django django-views

我是这样看的。有效。我是django的新手。你能帮我改进一下这段代码吗?谢谢

def getAPI(request):
    username = request.GET.get('username')
    password = request.GET.get('password')
    #TODO Match user and password
    if username:
        user = User.objects.get(username__exact=username)
        is_exist = user.check_password(password)
        if is_exist == True:
            api_key = ApiKey.objects.get(id=user.id)
        else:
            error_message = 'username or password is invalid.'
    return render_to_response('details.html',locals(),
                        context_instance=RequestContext(request)
                        )

如果用户名和密码不存在那么我想打印error message。否则我想打印ApiKey。感谢

2 个答案:

答案 0 :(得分:1)

你的意思是“打印”(在这种情况下只使用python的打印功能)或者你想在响应中返回它吗?如果是后者,请阅读有关django模板并将变量传递给render_to_response的内容。

另外,将密码作为GET变量粘贴是一个坏主意,因为它在URL上可见:

http://example.com/whatever?username=me&password=s3cr3t

用户/通行证信息通常应通过POST从表单发送。但也许你不是那么担心安全问题。

答案 1 :(得分:0)

以下是验证用户身份的基本模板:

from django.contrib.auth import authenticate

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            # User is authenticated - return api key
        else:
            # Return a 'disabled account' error message
    else:
        # Return an 'invalid login' error message.