html и python интеграция с flask - PullRequest
       157

html и python интеграция с flask

0 голосов
/ 07 августа 2020

может кто-нибудь помочь сделать этот код более эффективным. код работает, но все находится в файле .py, и я знаю, что могу сделать его более эффективным, но не знаю как. Я знаю, что мне нужно создать html, и часть html должна быть отображена там, но по какой-то причине ввод пользователя не передается в app.py, где находится моя функция. вот почему я поместил все в один и тот же файл и назвал это днем ​​:). но если у меня 10 приложений, длина моего кода будет такой большой, и мне придется редактировать заголовок сайта и все общие ресурсы на всех страницах. мы будем благодарны за любые чаевые.

!

!

!

>> Код ниже

@app.route('/vxlan_config', methods=["GET", "POST"])
def vxlan_config():
    vxlan_config_file = open("/Users/ahmad/vxlan_config.txt", "w")
    if request.method == "POST":
        vlanid = request.form["vlanid"]
        description = request.form["description"]
        vrf = request.form["vrf"]
        ip = request.form["ip"]
        mask = request.form["mask"]
        vxlan_conf = DCConfig(vlanid, description, vrf, ip, mask)
        vxlan_config_file.write(vxlan_conf.vxlan_config())

        return f'''
                <html>
                    <body>
    <!doctype html>
    <html lang="en">
      <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/css/bootstrap.min.css" integrity="sha384-VCmXjywReHh4PwowAiWNagnWcLhlEJLA5buUprzK8rxFgeH0kww/aWY76TfkUoSX" crossorigin="anonymous">

        <title>Distro blu310 Config</title>
      </head>
      <body>
      <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="/">Config Generator</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNavDropdown">
        <ul class="navbar-nav">
          <li class="nav-item active">
            <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="/vxlan_config">VXLAN Config</a>
      </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              Other Config Gen
            </a>
          </li>
        </ul>
      </div>
    </nav>
                        <p><h3>Your config file has been saved under vxlan_config.txt</h3></p>
                        <p><a href="/">Click here to go back to the main page</a>
                    </body> 
                </html>
            '''

    return '''
    <html>
    <body>
    <!doctype html>
    <html lang="en">
      <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/css/bootstrap.min.css" integrity="sha384-VCmXjywReHh4PwowAiWNagnWcLhlEJLA5buUprzK8rxFgeH0kww/aWY76TfkUoSX" crossorigin="anonymous">

        <title>Distro blu310 Config</title>
      </head>
      <body>
      <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="/"> Config Generator</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNavDropdown">
        <ul class="navbar-nav">
          <li class="nav-item active">
            <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="/vxlan_config">VXLAN Config</a>
      </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              Other Config Gen
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
              <a class="dropdown-item" href="/vxlan_config">VXLAN Config</a>
            </div>
          </li>
        </ul>
      </div>
    </nav>
                <body>
                    <p><h3>Enter the Values Below:</h3></p>
                    <form method="post" action="/vxlan_config">
                        <p>VLAN ID: <input name="vlanid" placeholder=3400></p>
                        <p>VLAN Description: <input name="description" placeholder=Citrix VLAN></p>
                        <p>VRF Name: <input name="vrf" placeholder=GRN200></p>
                        <p>SVI IP Address: <input name="ip" placeholder=10.248.10.1></p>
                        <p>VLAN Subnet Mask: <input name="mask" placeholder=255.255.255.0></p>
                        <p><input type="submit" value="Generate Config" /></p>
                    </form>
                </body>
            </html>
        '''

1 Ответ

1 голос
/ 07 августа 2020

Flask реализует Jinja2 язык шаблонов.

Вам просто нужно создать папку templates рядом с этим кодом и добавить свой код HTML в HTML файл в нем. Для получения более подробной информации проверьте Шаблоны рендеринга - Flask Документация .

Затем вместо прямого возврата строки верните:

from flask import render_template

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

Обратите внимание, что flask будет искать your_html_file. html в папке шаблонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...