Проблемы с пониманием логики колбы

#python #flask #web

Вопрос:

Я хочу разработать веб-приложение с помощью flask, поэтому я начал его изучать.

 from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"
 

В этом фрагменте кода для чего именно это @app.route("/") нужно?

В своем приложении я создал форму, которая получает такие данные, как имя, класс и раздел, и сохраняет их в базе данных sql. Вот код:

 from flask import Flask, render_template, request, url_for, flash, redirect
import sqlite3
app = Flask(__name__)


@app.route('/')
def index():
    return render_template('Main.html')


@app.route('/addrec',methods = ['POST', 'GET'])
def addrec():
   if request.method == 'POST':
  
     std = request.form['class']
     section = request.form['Section'].lower()
     Alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
     if section not in Alphabet:
         return render_template("NoSuchSection.html")
 

В этом я могу заметить, что над addrec() есть @app.route('/addrec',methods = ['POST', 'GET']) .

Так что же @app.route() это такое и для чего все его использование в колбе ?

(Я хочу понять его использование, потому что после этого только я смогу эффективно использовать его в своих проектах)

Я видел подобные вопросы, но не могу их понять

Комментарии:

1. Вы должны были сделать быстрый запуск : «Затем мы используем декоратор маршрута (), чтобы сообщить Flask, какой URL-адрес должен запускать нашу функцию».

2. Спасибо @KlausD. Я прочитаю документацию по колбе, чтобы понять это.

3. Что это за URL-адрес «/» ?

4. / по умолчанию используется для домашней страницы. Когда вы запустите приложение flask и нажмете URL-адрес в браузере, вы попадете на URL домашней страницы , этот / маршрут

5. Ну, я не полностью знаю python, поэтому документация была слишком сложной для моего понимания. Вот почему я задал этот вопрос на этом сайте. (Я не ожидал получить ответ здесь так скоро) Спасибо, что уделили мне время.

Ответ №1:

route() это декоратор в flask, который сообщает о пути/URL-адресе в вашем приложении. Какой бы путь вы ни хотели использовать в своем приложении, вы должны указать его в route()

 
from flask import Flask

app = Flask(__name__)


@app.route('/')
def home_page():
    return 'hompage'


@app.route('/user')
def user():
    return 'user_page'


@app.route('/shopping')
def shopping():
    return 'shopping'


if __name__ == '__main__':
    app.run()

 

Это очень простой пример. Здесь в вашем приложении есть три разных пути/URL /user -адреса, /shopping и / это означает домашнюю страницу.
Когда вы запустите свое приложение, ваш сервер предоставит вам какой-нибудь URL-адрес, где это приложение для колбы будет служить чему-то вроде Running on http://127.0.0.1:5000/

поэтому, когда вы нажмете http://127.0.0.1:5000/ , он приведет вас на очень домашнюю страницу из-за / пути, и вы увидите homepage сообщение в своем браузере.

аналогично , когда вы нажмете http://127.0.0.1:5000/users , вы увидите user_page сообщение в своем браузере, как /user только путь был выбран

Ответ №2:

Их называют декораторами. Это особая функциональность. В Flask app.route () — это то, каким вы хотите видеть свой URL-адрес.

Например:

 @app.route(‘/hello’)
 

Было бы для http://yourdomain.com/hello или http://127.0.0.1:5000/hello На каком бы веб-сайте вы ни запускали сервер.

Вы можете узнать больше о декораторах здесь: https://realpython.com/primer-on-python-decorators/