V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ubuntugx
V2EX  ›  Python

怎样用 Python 搭建的 Web 服务器来接收浏览器发来的 AJAX 请求并返回数据

  •  
  •   ubuntugx ·
    ubuntugx · Apr 3, 2016 · 7831 views
    This topic created in 3676 days ago, the information mentioned may be changed or developed.
    前台用 jQuery ajax 传了 url 。现在需要处理传来的图片并返回处理完的图片。
    我用了 flask 框架,查到是用 request 方法,但始终找不到好的例子。
    求提供方法或文章地址。
    15 replies    2016-04-03 18:53:34 +08:00
    loading
        1
    loading  
       Apr 3, 2016 via Android
    这个说到底不关 python 的事,建议去补习一下 ajax 是什么。
    ming2050
        2
    ming2050  
       Apr 3, 2016 via Android
    图片=文件
    ubuntugx
        3
    ubuntugx  
    OP
       Apr 3, 2016
    @loading
    @mringg 也许我没有理解清楚,是 前端已经传了 url ,现在不知道怎么用 python 在后端获取。
    maltoze
        4
    maltoze  
       Apr 3, 2016   ❤️ 1
    file = request.files['file']

    差不多是这样吧
    mornlight
        5
    mornlight  
       Apr 3, 2016   ❤️ 1
    你的问题可能是:怎么用 Flask 框架搭建一个 API Server 处理前端请求

    看文档啊,懒得费力气就看国内各种在线视频网站的 Flask 教程啊,跟着学上手做几个小时就会基本的了,初期你都不需要考虑架构上的问题,看你博客那么多文章也不像没基础的样子。
    loading
        6
    loading  
       Apr 3, 2016 via Android   ❤️ 1
    我给你一段!如果你还是不会,你真的高估了自己,多看文档吧!

    @app.route('/download/<path:path>',methods=['GET'])
    def download(path):
    空格 print path
    空格 return send_from_directory('D:\\download\',path)
    fy
        7
    fy  
       Apr 3, 2016   ❤️ 1
    楼主这表达能力捉鸡啊,我理解大概是这意思:
    前端提交了一个 URL ,可能是个图片地址,然后后端要去下载并处理这个文件。

    这是一个典型的异步任务场景,至于办法就多了去了,随手搜一搜就行
    loading
        8
    loading  
       Apr 3, 2016 via Android   ❤️ 1
    from flask import send_from_directory


    或者用

    return redirect(“/download/”+filename)
    这样配合 nginx 是一般用途了。
    ubuntugx
        10
    ubuntugx  
    OP
       Apr 3, 2016
    @loading 谢谢您,我去仔细看看。
    @mornlight 谢谢,主要刚刚接触 python 几天,只学了基本语法,到这里就不知道从哪找了。
    @fy 嗯是的,谢谢。
    loading
        11
    loading  
       Apr 3, 2016 via Android
    建议去看完 flask 那个微博的例子。
    不过我感觉你是不懂前端吧。
    Biwood
        12
    Biwood  
       Apr 3, 2016
    你学东西的跨度还真有点大...首先你得知道怎么用 Flask 搭建一个普通的网站,然后再谈 AJAX 的事
    ubuntugx
        13
    ubuntugx  
    OP
       Apr 3, 2016
    @Biwood 是…要学的还真是多呢…
    clino
        14
    clino  
       Apr 3, 2016   ❤️ 2
    哦,刚看了楼主是处理文件的情况,这部分可能 uliweb 和 flask 差别会大一些
    前端用 jqupload 上传文件: https://github.com/zhangchunlin/shapps/blob/master/shapps/linci/artifact/templates/Artifact/inc_view.html#L123
    后端处理上传过来的文件: https://github.com/zhangchunlin/shapps/blob/master/shapps/linci/artifact/views.py#L102
    后端处理文件下载请求,如果出错就返回 json 但 http status code 为错误值,如果文件正常就返回文件: https://github.com/zhangchunlin/shapps/blob/master/shapps/linci/artifact/views.py#L181
    IMRES
        15
    IMRES  
       Apr 3, 2016   ❤️ 1
    ```python
    @app.route('/hello', methods=['POST', 'GET'])
    def hello():
    if request.method == 'POST':
    url = request.form.get('url')
    elif request.method == 'GET':
    url = request.args.get('url')
    return 'hello'
    ```

    只写一个接口看官方文档就可以了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3197 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 14:14 · PVG 22:14 · LAX 07:14 · JFK 10:14
    ♥ Do have faith in what you're doing.