我是这样看的。有效。我是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
。感谢
答案 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.