Seite 1 von 1

Flask, Python, Restful-Example, API

Verfasst: Freitag 6. September 2019, 07:45
von mignoncharly
Moin!
bin mit Flask schon seit 1 Monat beschäftigt aber seit gestern versuche ich das Beispiele hier https://flask-restful.readthedocs.io/en ... ll-example in meiner gebastelten (mit Hilfe eines Tuto)Webapp zu testen aber ich bekomme immer Fehler wegen nicht gefundene Modulen und möchte gern wissen wo kommt was hin. Vielen Dank

__init__.py

Code: Alles auswählen

.
.
.
from flask import Flask
from flask_restful import reqparse, abort, Api, Resource
from webapp.routes import PostList, Postss #doenst work
from routes import  PostList, Postss #doesnt work

app = Flask(__name__)

api = Api(app)
#setup the Api resource routing here
api.add_resource(PostList, '/posts')
api.add_resource(Postss, '/posts/<post_id>')
routes.py

Code: Alles auswählen

POSTS = {
    'post1': {'task': 'Build an API'},
    'post2': {'task': 'Test it'},
    'post3': {'task': 'Deploy it, lol!'},
}

def abort_if_post_doesnt_exist(post_id):
    if post_id not in POSTS:
        abort(404, message="Post {} doesn't exist".format(post_id))
        
parser = reqparse.RequestParser()
parser.add_argument('task')

# Post
# shows a single post item and lets you delete a post item
class Postss(Resource):
    def get(self, post_id):
        abort_if_post_doesnt_exist(post_id)
        return POSTS[post_id]

    def delete(self, post_id):
        abort_if_post_doesnt_exist(post_id)
        del POSTS[post_id]
        return '', 204 #for content

    def put(self, post_id):
        args = parser.parse_args()
        task = {'task': args['task']}
        POSTS[post_id] = task
        return task, 201 #for created

# PostList
# shows a list of all posts, and lets you ADD POST to add new tasks
class PostList(Resource):
    def get(self):
        return POSTS

    def addpost(self):
        args = parser.parse_args()
        post_id = int(max(POSTS.keys()).lstrip('post')) + 1
        post_id = 'post%i' % post_id
        POSTS[post_id] = {'task': args['task']}
        return POSTS[post_id], 201
run.py

Code: Alles auswählen

from webapp import app

if __name__ == '__main__':
    app.run(debug=True)
VG
mignoncharly

Re: Flask, Python, Restful-Example, API

Verfasst: Freitag 6. September 2019, 08:44
von Sirius3
@mignoncharly: wie ist der exakte Fehler inklusive komplettem Traceback?

Wir wissen ja nicht, welche Module Du wie installierst hast.

Re: Flask, Python, Restful-Example, API

Verfasst: Freitag 6. September 2019, 08:52
von mignoncharly
Sirius3 hat geschrieben: Freitag 6. September 2019, 08:44 @mignoncharly: wie ist der exakte Fehler inklusive komplettem Traceback?

Wir wissen ja nicht, welche Module Du wie installierst hast.
Hey @Sirius3,

here we go, Thks

(env) C:\Users\...\flask_app>python run.py
Traceback (most recent call last):
File "run.py", line 1, in <module>
from webapp import app
File "C:\Users\...\flask_app\webapp\__init__.py", line 42, in <module>
from routes import PostList, Postss
ModuleNotFoundError: No module named 'routes'

Re: Flask, Python, Restful-Example, API

Verfasst: Freitag 6. September 2019, 09:57
von Sirius3
Wo liegt denn die Datei routes.py? Soll das ein relativer Import sein?

Re: Flask, Python, Restful-Example, API

Verfasst: Freitag 6. September 2019, 09:59
von __blackjack__
@mignoncharly: Nun es gibt ja auch kein global installiertes `routes`-Modul. Genau so wenig wie ``import app`` funktionieren würde, weil es das auch nicht gibt. Nun schau Dir mal an wie Du `app` importierst, und überlege was das wohl für `routes` bedeuten mag.

Re: Flask, Python, Restful-Example, API

Verfasst: Freitag 6. September 2019, 10:06
von mignoncharly
Sirius3 hat geschrieben: Freitag 6. September 2019, 09:57 Wo liegt denn die Datei routes.py? Soll das ein relativer Import sein?
Ja genau

Bild

Re: Flask, Python, Restful-Example, API

Verfasst: Freitag 6. September 2019, 12:40
von __blackjack__
@mignoncharly: Wenn das ein relativer Import sein soll, dann muss man den halt auch als relativen Import schreiben und nicht als absoluten. Python fängt da ja nicht an zu raten ob man mit einem absoluten Import nicht vielleicht eigentlich einen relativen gemeint hat. Den Unterschied gibt es ja gerade deswegen das man entscheiden kann ob man relativ oder absolut meint, und im Zweifelsfall sogar beides machen kann, wenn es Module mit gleichem Namen sowohl relativ als auch absolut gibt.

Re: Flask, Python, Restful-Example, API

Verfasst: Montag 9. September 2019, 10:18
von mignoncharly
__blackjack__ hat geschrieben: Freitag 6. September 2019, 12:40 @mignoncharly: Wenn das ein relativer Import sein soll, dann muss man den halt auch als relativen Import schreiben und nicht als absoluten. Python fängt da ja nicht an zu raten ob man mit einem absoluten Import nicht vielleicht eigentlich einen relativen gemeint hat. Den Unterschied gibt es ja gerade deswegen das man entscheiden kann ob man relativ oder absolut meint, und im Zweifelsfall sogar beides machen kann, wenn es Module mit gleichem Namen sowohl relativ als auch absolut gibt.
Hey __blackjack__!

danke für deine Antwort. Das Problem wurde schon gelöst! :)
Ich hatte den Modul im falschen Skript importiert.
Danke an alle

VG
mignoncharly