Python flask의 flask_login에 둘 이상의 사용자 추가.

5778 단어 pythoncsshtmlwebdev
사용자를 식별하기 위해 html 양식을 제출할 때 하나의 추가 입력을 받습니다. 다음은 두 사용자를 로그인하는 단계입니다. -
  • HTML 양식을 제출할 때 사용자 1의 레이블을 가져옵니다.

  • <form action="/login" method="post">
                {% include "messages.html" %}
                <div class="form-group">
                    <input type="email" class="form-control mt-2" name="ulmail" placeholder="Enter E-mail" required>
                </div>
    
                <div class="form-group">
                    <input type="password" class="form-control mt-2" name="ulpass" placeholder="Enter password" required>
                </div>
    
                <div class="form-group">
                    <input type="text" class="form-control mt-2" name="ulabel" value="User" readonly>
                </div>
    
                <div class="text-center">
                    <br>
                    <button type="submit" class="btn btn-primary btn-rounded">Log In</button>
    
                </div>
    
    
            </form>
    


    위의 형식으로 이름 = "레이블"및 값 = "사용자"인 마지막 분할에서 사용자 1로부터 입력을 받고 있습니다. 읽기 전용입니다.
  • 그런 다음 두 번째 사용자로부터 입력을 받습니다.

  • <form action="/doctorlogin" method="post">
                {% include "messages.html" %}
                <div class="form-group">
                    <input type="email" class="form-control mt-2" name="dlmail" placeholder="Enter E-mail" required>
                </div>
    
                <div class="form-group">
                    <input type="text" class="form-control mt-2" name="dluprn" placeholder="Enter UPRN" required>
                </div>
    
                <div class="form-group">
                    <input type="password" class="form-control mt-2" name="dlpass" placeholder="Enter password" required>
                </div>
    
                <div class="form-group">
                    <input type="text" class="form-control mt-2" name="dlabel" value="Doctor" readonly>
                </div>
    
                <div class="text-center">
                    <br>
                    <button type="submit" class="btn btn-primary btn-rounded">Log In</button>
    
                </div>
    
    
            </form>
    


    여기서 name="dlabel"및 value="의사".
  • 이제 파이썬 파일에서 전역 변수를 더럽히십시오. *참고: 두 명의 사용자를 위해 데이터베이스에 두 개의 서로 다른 테이블을 만들고 파이썬 파일에서 성공적으로 가져왔다고 가정합니다. *
    여기서 사용자 1= 사용자 및
    사용자 2= 의사.

  • dl  = "nan"
    @login_manager.user_loader
    def load_user(user_id):
        if dl == "Doctor":
            return Doctor.query.get(int(user_id))
        elif dl == "User":
            return User.query.get(int(user_id))
    


    여기에서는 mysql databse(XAMPP)를 연결하기 위해 sqlalchemy 모듈을 사용하고 있습니다.

    app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:@127.0.0.2:3307/medserv"
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db = SQLAlchemy(app) 
    
    


    "의사"및 "사용자"는 "medserv"데이터베이스에서 서로 다른 두 테이블입니다.
  • 이제 로그인 사용자 1의 경우:

  • @app.route("/login", methods=['POST','GET'])
    def login():
        if request.method == "POST":
            global dl
            email = request.form.get('ulmail') 
            upass = request.form.get('ulpass')
            dl  = request.form.get('ulabel')
            user = User.query.filter_by(umail = email).first_or_404(description='There is no data with {}'.format(email))
    
            if user and user.upass == upass:
    
                login_user(user)
                postsdata = Userdata.query.filter_by(email = email).all()
                flash("Login Successful", "success")
                return render_template("cusers.html", postsdata=postsdata)
            else:
                flash("Invalid Credential", "danger")
                return render_template("userlogin.html")
    
        return render_template("userlogin.html")
    


    이 클래스에서 dl을 전역으로 정의하고 양식에서 수집한 레이블 값을 "dl"변수에 저장하고 로그인 세션을 시작합니다. dl=="User"이기 때문에 사용자 1로 로그인하므로 로그인 관리자가 테이블 2로 리디렉션되거나 사용자 테이블에 대한 로그인이라고 말할 수 있습니다.
  • 이제 로그인 사용자 2

  • @app.route("/doctorlogin", methods=['POST','GET'])
    def doctorlogin():
        if request.method == "POST":
            global dl
            email = request.form.get('dlmail') 
            upass = request.form.get('dlpass')
            uprn = request.form.get('dluprn')
            dl = request.form.get('dlabel')
            user = Doctor.query.filter_by(dmail = email).first_or_404(description='There is no data with {}'.format(email))
    
            if user and user.dpass == upass and user.duprn==uprn:
    
                login_user(user)
    
                postsdata = Doctordata.query.filter_by(udcon = email).all()
                flash("Login Successful", "success")
                return render_template("docdash.html",postsdata=postsdata)
            else:
                flash("Invalid Credential", "danger")
                return render_template("doctorlogin.html")
    
        return render_template("doctorlogin.html")
    


    이제 dl=="의사"사용자 2로 로그인하여 의사에 해당하는 테이블에서 정보를 검색합니다.

    좋은 웹페이지 즐겨찾기