参数不传递给 Flask 中的其他页面

The parameter dont pass to the other page in flask

提问人: 提问时间:7/1/2023 更新时间:7/1/2023 访问量:19

问:

因此,我有html页面来选择字体并重定向用户以生成具有所选字体名称的页面:

        <form action="{{ url_for('logo_fonts') }}" method="post">
        <button type="submit" class="generate-button">
            توليد  <i class="fa fa-arrow-right"></i>
        </button>

        <div class="container">
            {% for font in fonts %}
            <div class="card">
                <img src="{{ url_for('static', filename=font['image']) }}" alt="{{ font['name'] }}" class="font-image" data-font="{{ font['name'] }}">
                <div class="font-details">
                    <hr class="separator">
                    <h3 class="font-name">{{ font['name'] }}</h3>
                    <img src="{{ url_for('static', filename=font['example_image']) }}" alt="{{ font['name'] }} Example" class="font-example">
                </div>
                <input type="checkbox" name="selected_fonts[]" value="{{ font['name'] }}" style="display: none;">
            </div>
            {% endfor %}
        </div>
    </form>

    <script>
        $(document).ready(function() {
            $(".card").click(function() {
                $(this).toggleClass("selected");
                var checkbox = $(this).find("input[type=checkbox]");
                checkbox.prop("checked", !checkbox.prop("checked"));
            });
        });
    </script>
</body>

    <script>
        function toggleCardSelection(card) {
            card.classList.toggle('selected');
        }
    </script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

    <script>
        $(document).ready(function() {
            $(".card").click(function() {
                $(this).toggleClass("selected");
            });
        });
    </script>

我想将字体名称作为参数传递给生成页面,这是我 app.py:

@app.route('/logo_fonts', methods=['POST', 'GET'])
def logo_fonts():
    logo_name = session.get('logo_name')
    selected_colors = session.get('selected_colors')
    selected_industry = session.get('selected_industry')

    fonts = [
        {
            'name': 'Modern Font',
            'image': 'img/fonts/modern.svg',
            'example_image': 'img/fonts/examples/modern.svg'
        },
        {
            'name': 'Handwritten Font',
            'image': 'img/fonts/handwritten.svg',
            'example_image': 'img/fonts/examples/handwritten.svg'
        },
        {
            'name': 'Elegant Font',
            'image': 'img/fonts/elegant.svg',
            'example_image': 'img/fonts/examples/elegant.svg'
        },
        {
            'name': 'Slab Font',
            'image': 'img/fonts/slab.svg',
            'example_image': 'img/fonts/examples/slab.svg'
        },
        {
            'name': 'Futuristic Font',
            'image': 'img/fonts/futuristic.svg',
            'example_image': 'img/fonts/examples/futuristic.svg'
        },
        {
            'name': 'Playful Font',
            'image': 'img/fonts/playful.svg',
            'example_image': 'img/fonts/examples/playful.svg'
        },
    ]

    if request.method == 'POST':
        selected_fonts = request.form.getlist('selected_fonts[]')
        session['selected_fonts'] = selected_fonts
        return redirect(url_for('generate'))

    return render_template('logo_fonts.html', logo_name=logo_name, logo_colors=selected_colors,
                           selected_industry=selected_industry, fonts=fonts)

@app.route('/generate', methods=['POST', 'GET'])
def generate():
    selected_fonts = request.form.getlist('selected_fonts[]')

    return render_template('logo_maker.html', selected_fonts=selected_fonts)

当它重定向到生成页面并且我打印选定的字体名称时,它会给我输出:“[]” .help please

python-3.x flask jinja2 参数传递

评论

0赞 Rob 7/3/2023
看起来您正在 POST 请求中设置会话变量,但随后您正在尝试从 中获取值。您未在重定向中传递表单值。相反,请尝试访问generaterequest.formgenerate

答: 暂无答案