Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

l3szcz - zdjęcie

l3szcz

Rejestracja: 04.08.2011
Aktualnie: Przegląda stronę główną
Poza forum Ostatnio: wczoraj, 07:27
-----

Moje tematy

[PYTHON] RestAPI - problem ze zwrotem danych

19.12.2018 21:45

Hejka naklejka.
Tworzę obecnie API oparte o Flask - konkretniej moduł Flask-Restless (https://flask-restle...s.io/en/stable/) - dokumentację przejrzałem i zapoznałem się z możliwymi technikami.

Kod wygląda tak:

from flask_restless import APIManager
apimanager = APIManager(app, flask_sqlalchemy_db=db)
apimanager.create_api(Meal, methods=['GET', 'POST'])

Model Meal: 
 

class Meal(db.Model):
    __tablename__ = 'meals'
    __table_args__ = (
        Index('unique_meals', 'date', 'name', unique=True),
    )

    id = db.Column(Integer, primary_key=True)
    date = db.Column(Date, nullable=False)
    name = db.Column(String(200), nullable=False)
    restaurant_id = db.Column(ForeignKey(
        'restaurants.id', ondelete='CASCADE'), nullable=False, index=True)
    price = db.Column(String(8), nullable=False)

    restaurant = relationship('Restaurant')

Zwrot z serwera: 
 

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask_debugtoolbar/__init__.py", line 125, in dispatch_request
    return view_func(**req.view_args)
  File "/usr/local/lib/python3.6/cProfile.py", line 109, in runcall
    return func(*args, **kw)
  File "/home/tomek/.local/lib/python3.6/site-packages/flask_restless/views.py", line 157, in decorator
    return func(*args, **kw)
  File "/home/tomek/.local/lib/python3.6/site-packages/mimerender.py", line 265, in wrapper
    content = renderer(**result)
  File "/home/tomek/.local/lib/python3.6/site-packages/flask_restless/views.py", line 303, in jsonpify
    response = jsonify(*args, **kw)
  File "/home/tomek/.local/lib/python3.6/site-packages/flask_restless/views.py", line 219, in jsonify
    response = _jsonify(*args, **kw)
  File "/usr/local/lib/python3.6/site-packages/flask/json/__init__.py", line 321, in jsonify
    dumps(data, indent=indent, separators=separators) + '\n',
  File "/usr/local/lib/python3.6/site-packages/flask/json/__init__.py", line 179, in dumps
    rv = _json.dumps(obj, **kwargs)
  File "/usr/local/lib/python3.6/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/usr/local/lib/python3.6/json/encoder.py", line 201, in encode
    chunks = list(chunks)
  File "/usr/local/lib/python3.6/json/encoder.py", line 430, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File "/usr/local/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
    yield from chunks
  File "/usr/local/lib/python3.6/json/encoder.py", line 325, in _iterencode_list
    yield from chunks
  File "/usr/local/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
    yield from chunks
  File "/usr/local/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
    yield from chunks
  File "/usr/local/lib/python3.6/json/encoder.py", line 437, in _iterencode
    o = _default(o)
  File "/usr/local/lib/python3.6/site-packages/flask/json/__init__.py", line 81, in default
    return _json.JSONEncoder.default(self, o)
  File "/usr/local/lib/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'Decimal' is not JSON serializable

Chodzi prawdopodobnie o wartość pobieraną z price mimo, że ustawiłem ją jako string (MySQLowski VARCHAR). 

Macie jakąś propozycję jak mógłbym to naprawić?

Argumenty komend przy "say"

26.02.2018 15:43

Witajcie.
O ile orientuje się w miarę dobrze w pobieraniu argumentów typu: 
/ban USER CZAS podczas tworzenia pluginu to mam pytanie dla bardziej zaawansowanych.

Powiedzmy, że chciałbym aby ktoś wpisał sobie komendę /zglos NICK po czym u góry wyświetli się mu (w miejscu domyślnym dla say) tekst: "Podaj treść skargi:" po czym miejsce na wpisanie tejże treści.

 

Czy macie jakiś pomysł jak to rozwiązać?