【问题标题】:Unable to parse URL parameters in Flask无法解析 Flask 中的 URL 参数
【发布时间】:2020-05-24 20:33:57
【问题描述】:

我在 CentOS VPS 上使用 Apache 部署了一个 Flask 应用程序。这是我部署应用程序时遵循的链接:https://medium.com/@mohdejazsiddiqui/deploy-flask-app-in-apache-shared-hosting-5b3c82c8fd5e。出于某种奇怪的原因,我的 Flask 应用程序无法检测到在我的本地环境中运行良好的 url 参数。我已经向我的 VPS 提供商提出了这个问题,但我只是想看看这里是否有人有同样的经历。

示例网址:mydomain.net/login?error=error_message 这是我的代码:

from flask import Blueprint, redirect, request, url_for, render_template
import requests

from myapp.forms import Login, Signup

auth = Blueprint('auth', __name__) #This is imported in the main view

@auth.route('/login', methods=['GET'], strict_slashes=False)
def login():
    loginform = Login()
    signupform = Signup()

    ...
    current_url = request.url
    err = request.args.get('error', '')
    ...

    return something

当我打印出current_url 时,它只返回我的基本网址mydomain.net,而 err 是一个空字符串。我也试过request.form 无济于事。

这是我的.htaccess 文件,以防万一这是与 apache 相关的问题:

# .htaccess
Options +ExecCGI 
AddHandler cgi-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /home/servername/public_html/mydomain.net/app.cgi/$1 [L]

谢谢。

【问题讨论】:

    标签: python apache flask


    【解决方案1】:
                from flask import render_template, request, redirect, url_for
                @app.route('/',methods=['GET'])
                def login():    
                    return "Hello World!"
                    # return render_template('/auth/login.html')
    
                @app.route('/auth/login',methods=['POST'])
                def post_login():
                    error = None
                    email = request.form.get('email')
                    password = request.form.get('password')
    
                    if email!='nandhini@gmail.com' or password !='nandhini':
                        error="invalid email and password"
                        return render_template('/auth/login.html',error=error, email=email,password=password)
                    else:
                        flash('you were successfully logged in','success')
                        return redirect(url_for('register'))
    

    【讨论】:

    • 这并不能真正解决问题。
    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 2015-01-28
    • 2018-09-28
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    相关资源
    最近更新 更多