网站侧边栏内容

问题描述 投票:0回答:1

当我单击侧栏中的某个选项时,我希望与其相关的内容在右侧打开。 我编写了下面的代码,但是即使我到达“http://127.0.0.1:5000/admin_panel_menu/A”页面,SideBar 也会出现,但 contentA.html 中的文本不会出现。我该如何解决这个问题?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="/static/css/admin_panel.css">
    <title>Admin Paneli</title>
</head>
<body>
    <div class="sidebar">
        <!-- Sidebar içeriği -->
        <div class="menu">
            <ul>
                <li class="active">
                    <a href="{{ url_for('admin_panel_menu', panel_id='A') }}"> A</a>
                </li>

                <li>
                    <a href="{{ url_for('admin_panel', panel_id='B') }}"> B</a>
                </li>

                <li>
                    <a href="{{ url_for('admin_panel', panel_id='C') }}"> C</a>
                </li>
            </ul>
        </div>
    </div>

    <div class="content">
        <!-- İçerik gösterilecek alan -->
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>
@app.route("/admin_panel")
def admin_panel():
    return render_template("admin_panel.html")

@app.route('/admin_panel_menu/<panel_id>')
def admin_panel_menu(panel_id):
    # content_id'ye göre ilgili içeriği gönder
    if panel_id == 'A':
        return render_template('contentA.html')
    else:
        # Hata durumunda başka bir sayfaya yönlendirme yapılabilir
        return redirect('/gadmin')

如果您有帮助,我会很高兴

html css flask
1个回答
0
投票

这里的问题是:

if panel_id == 'A'
,你已经在python文件中提到了。但是当你在 html 文件中提到
<a href="{{ url_for('admin_panel_menu', panel_id='A') }}"> A</a>
时。但是python的panel_id和html panel_id映射到哪里了呢?所以这就是你应该这样做的。只需使用 url
"http://127.0.0.1:5000/admin_panel_menu/A"
,此代码就会按预期工作。如果 panel_id 是从 HTML 输入中提供的,您应该 在 html 中创建一个表单,表单参数应该在 python 文件中接收。

HTML(内容A.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="/static/css/admin_panel.css">
    <title>Admin Paneli</title>
</head>
<body>
    <div class="sidebar">
        <!-- Sidebar içeriği -->
        <div class="menu">
            <ul>
                <li class="active">
                    <a href="{{ url_for('admin_panel_menu', panel_id='panel_id') }}"> A</a>
                </li>

                <li>
                    <a href="{{ url_for('admin_panel', 'panel_id') }}"> B</a>
                </li>

                <li>
                    <a href="{{ url_for('admin_panel', 'panel_id') }}"> C</a>
                </li>
            </ul>
        </div>
    </div>

    <div class="content">
        <!-- İçerik gösterilecek alan -->
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>

Python 文件

from flask import \
Flask as fl, \
render_template as tmp, \
redirect as rd, \
url_for as url, \
request as rq


app = fl(__name__)

@app.route("/admin_panel")
def admin_panel():
    return render_template("admin_panel.html")
    


@app.route('/admin_panel_menu/<panel_id>')
def admin_panel_menu(panel_id):
    # content_id'ye göre ilgili içeriği gönder
    panel_ids = ['A', 'B', 'C']
    htmls = ['contentA.html', 'contentB.html', 'contentC.html']
    for i in range(len(panel_ids)):
        if panel_id == panel_ids[i]:
            return tmp(htmls[i], panel_id = panel_id)
        else:
            return rd('/gadmin')
    
  
        
if __name__ == '__main__' : app.run()
© www.soinside.com 2019 - 2024. All rights reserved.