簡體   English   中英

Python flask 應用登錄

[英]Python flask application login

我是 python/flask 的新手,並開始了我的第一個項目,該項目顯示數據庫中的數據,現在 sqlite 作為可搜索表。 我現在的問題是每個人都可以編輯並向數據庫添加新數據,因為我沒有提供登錄名(CRUD 工作正常)。 是否可以在不注冊的情況下添加登錄名? 我只需要某些人可以訪問 CRUD 功能,而其他人只是為了能夠查看表格並在其中搜索。 這些特定的(“管理員”)人也不應該需要注冊,也許只需輸入一個預設的硬編碼名稱/密碼即可登錄。

我已經嘗試過這樣的事情:

@app.route("/")
@app.route("/login",  methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        
        if form.loginname.data == 'admin' and form.loginpassword.data == 'password':
            flash('Logged in!', 'success')
            return redirect(url_for('RetrieveList'))
        else:
            flash('Coulnd't log in!', 'danger')
    return render_template('login.html', title='Login', form=form)

表格:

class LoginForm(FlaskForm):
    loginname = StringField("Name", validators=[InputRequired()])
    loginpassword = PasswordField("Passwort", validators=[InputRequired()])
    
    submit = SubmitField("Log in")

登錄.html

<div class="content-section" style="margin-left: 20px; margin-right: 20px;">
    <form action='' method="POST">
        {{ form.hidden_tag() }}
        <fieldset class="form-group">
            <legend>Login</legend>
            <div class="form-group">
                {{ form.loginname.label(class="form-control-label") }}
                {{ form.loginname(class="form-control form-control-lg") }}
            </div>
            <div class="form-group">
                {{ form.loginpassword.label(class="form-control-label") }}
                {{ form.loginpassword(class="form-control form-control-lg") }}
            </div>

            <div class="form-group">
                {{ form.submit(class="btn btn-outline-info") }}
            </div>
        </fieldset>
    </form>
</div>
<div class="border-top pt-3">
    <small class="text-muted">
        Go to search <a class="ml.2" href="{{ url_for('RetrieveListView') }}">HOME</a>
    </small>

</div>

Retrievelist 然后在理論上擁有具有所有功能的頁面,例如“編輯/刪除/新建”,但我收到“方法不允許”錯誤消息。

@app.route("/data")
def RetrieveList():
    employees = WissenModel.query.all()
    return render_template("datalist.html", employees=employees)

RetrieveListView 的頁面沒有“編輯/刪除/新建”按鈕。

提前致謝!

405 (又名Method not allowed )是當您使用 HTTP 方法發送請求時,某些路由不應該處理。 當您不提供routemethods參數時,它默認只有 GET。 在您的表格中:

<form action='' method="POST">

您將 POST 請求發送到 /,但您的路線:

@app.route("/")
@app.route("/login",  methods=['GET', 'POST'])

只期望 GET 在 /

要使其工作,請將您的action更改為/login (或使用url_for )或將 POST 方法添加到 / 路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM