Ошибка типа: sportCategory () принимает ровно 1 аргумент (задано 0) - PullRequest
0 голосов
/ 24 июня 2018
from flask import Flask, render_template, request, redirect, url_for, 
jsonify
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database_setup import Base, SportCategory, MenuItem

app = Flask(__name__)
engine = create_engine('sqlite:///sportmenu.db',connect_args= 
{'check_same_thread':False},)
Base.metadata.bind = engine

DBSession = sessionmaker(bind=engine)
session = DBSession()

@app.route('/')
@app.route('/catalog/')
def sportCategory(id):
sport = 
session.query(SportCategory).order_by(SportCategory.name).filter_by(id 
= category_id)
items = 
session.query(MenuItem).order_by(MenuItem.date.desc()).filter_by(id = 
menu_item_id)
return render_template('menu.html',category = sport, items = items)

Код выше не будет работать. Я попробовал в основном все, что мне известно. Что может быть не так с этим?

Вот то, на что ссылается приведенный выше код.

class SportCategory(Base):
__tablename__ = 'category'

id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)


class MenuItem(Base):
__tablename__ = 'menu_item'

id = Column(Integer, primary_key=True)
name = Column(String(80), nullable=False)
description = Column(String(1000))
price = Column(String(8))
date = Column(Integer)
sport_id = Column(Integer, ForeignKey('category.id'))
sport = relationship(SportCategory)

1 Ответ

0 голосов
/ 24 июня 2018

Ошибка, которую вы видите, вызвана этими тремя строками.

@app.route('/')
@app.route('/catalog/')
def sportCategory(id):

Первые два объявляют маршруты без переменных. Но def объявляет обработчик маршрута, который ожидает его. Простое решение состоит в том, чтобы изменить первые два на

@app.route('/<id>')
@app.route('/catalog/<id>')

И вы можете поставить отдельную

@app.route('/')
def noSportCategory():

для обработки случая без идентификатора.

...