2016-11-18 60 views
0

我是新的python django。我試圖創建一個簡單的應用程序,即用戶登錄並將其連接到Oracle 11g數據庫。我的連接成功。我的問題是當我使用用戶數據(用戶名和密碼)。它總是將我重定向到無效頁面上。它也指出了驗證行說(預期:)錯誤。無法從oracle數據庫驗證用戶(python django)

這裏是我的代碼

views.py

from django.http import HttpResponse, HttpResponseRedirect 
from django.template import loader 
from django.contrib import auth 
from django.shortcuts import get_object_or_404, render 
from .models import OnlineUser 

    def login(request): 
    return render(request, 'login.html') 

def auth_view(request): 
    userid = request.POST.get("userid", '') 
    userpass = request.POST.get("userpass", '') 
    user = auth.authenticate(OnlineUser.USERID=userid, OnlineUser.USERPASS=userpass) 
    #user = auth.authenticate(userid=userid, userpass=userpass) 

    if user is not None: 
     auth.login(request, user) 
     return HttpResponseRedirect('/samplesite/loggedin') 
    else: 
     return HttpResponseRedirect('/samplesite/invalid') 

def loggedin(request): 
    user = get_object_or_404(OnlineUser, pk=id) 
    return render(request, 'login.html', {'user': user}) 


def invalid(request): 
    return render(request, 'invalid.html') 

def logout(request): 
    auth.logout(request) 
    return render(request, 'logout.html') 

models.py

from __future__ import unicode_literals 

from django.db import models 

class OnlineUser(models.Model): 
    ID = models.IntegerField(primary_key=True) 
    USERID = models.TextField() 
    USERPASS = models.TextField() 

    class Meta: 
     managed = False 
     db_table= 'TBL_ONLINE_USER' 

    def __str__(self): 
     return str(self.ID) 

模板/ login.html的

<div> 
    <form action="/samplesite/auth_view/" method="POST">{% csrf_token %} 
     <input type='text' size='25' name="userid" id="userid" class="form-control" placeholder="User ID"/> 
     <br/> 
     <input type='password' size='25' name="userpass" id="userpass" class="form-control" placeholder="Password"/> 
     <br/> 
     <input type="submit" value="login"/> 
    </form> 
</div> 

回答

0

it should be

userid = request.POST.get("userid", '') 
userpass = request.POST.get("userpass", '') 
user = authenticate(username=userid, password=userpass) 

我希望userid是用戶的用戶名

+0

仍然沒有工作,先生 – jned29

+0

@ jned29那麼你就錯了傳遞cridentials? – doniyor