Подробные маршруты во Фляске - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю в Rails и обнаружил, что мои маршруты во флягах очень быстро запутались. Похоже, что flask призывает вас включить всю логику вашего контроллера в определение вашего маршрута / приложения.

Так что вместо

resources :users

и добавление реализации в users_controller.py

Я получаю

@app.route("/users"), methods=["GET"]
def list_users():
    return ..

@app.route("/users/new"), methods=["GET"]
def new_user():
    return render_template("new")

@app.route("/users"), methods=["POST"]
def create_user()
    ....

Затем добавьте еще 4 действия. Это действительно требуется?

Я пробовал с чертежами, которые, кажется, сравниваются с Rails Engines, но это не тот тип разбиения, который я ищу. Как я могу сделать мои маршруты о моих маршрутах, а не об их реализации? Мне действительно нужно обновиться до Django?

Редактировать

Другими словами, возможно, более ясный способ: я хочу, чтобы методы были из моего app.py файла. И я хочу более высокую абстракцию, чем route() для определения ресурсов CRUD. Что-то вроде

app.resources("users", controller=UsersController)

или, что еще лучше, попросите Flask разрешить контроллер на основе имени ресурса.

Затем UsersController будет выглядеть примерно так

class UsersController:

    def index():
        pass

    def show(user_id):
        pass

    def new():
        pass

    def create():
        pass

    def edit(user_id):
        pass

    def update():
        pass

    def delete():
        pass

1 Ответ

0 голосов
/ 12 сентября 2018

Вы ищете это возможно? flask.pocoo.org/docs/1.0/views охватывает подключаемые представления, проверьте последнюю часть на , расширяющем MethodView.

class UserAPI(MethodView):

    def get(self, user_id):
        if user_id is None:
            # return a list of users
            pass
        else:
            # expose a single user
            pass

    def post(self):
        # create a new user
        pass

    def delete(self, user_id):
        # delete a single user
        pass

    def put(self, user_id):
        # update a single user
        pass

Просто обратите внимание, что реализации представлений CRUD не выходят за рамки коробки во Flask, так как в своей конструкции они стараются быть незаметными и гибкими.

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