V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
vvniu
V2EX  ›  Python

python+django,REST 和 ajax 到底是什么玩意。。。木有感觉啊。。。。怎么看了半天感觉完全没必要?是会效率更高还是更人性化还是布局个更合理?翻了翻v2ex的旧帖子好像也不太赞成用的说。。。

  •  
  •   vvniu · 2014-01-27 22:19:52 +08:00 · 6721 次点击
    这是一个创建于 3952 天前的主题,其中的信息可能已经有所发展或是发生改变。
    27 条回复    1970-01-01 08:00:00 +08:00
    FrankFang128
        1
    FrankFang128  
       2014-01-27 22:44:24 +08:00
    小马过河。谁用谁知道。
    RIcter
        2
    RIcter  
       2014-01-27 22:44:29 +08:00
    ....嗯..不吐槽了orz..
    lz多看看...看看吧...
    loading
        3
    loading  
       2014-01-27 22:45:12 +08:00
    别理这些东西,先用jquery学习完ajax,其中你会需要json数据,然后你学一下python在返回json,然后慢慢你就接触rest了。

    我给你布置个任务吧:
    后端存几个用户名,你前端在输用户名后,检查是否已存在,顺便把该用户信息列出。
    慢慢来。
    RIcter
        4
    RIcter  
       2014-01-27 22:46:14 +08:00
    @loading 建议先别上Django :P
    loading
        5
    loading  
       2014-01-27 22:49:12 +08:00
    @RIcter 嗯,建议最后上flask,djngo对于lz来说,是祸害。
    hitsmaxft
        6
    hitsmaxft  
       2014-01-27 22:52:39 +08:00
    走别人走过的路, 遵循比较靠谱的协议, 比自己研究踩坑要划算
    vvniu
        7
    vvniu  
    OP
       2014-01-27 22:56:50 +08:00
    @loading 这个。。。输入后form提交然后views里写个函数检查数据库里一下有没有。。。难道不行么

    话说回来,有木有什么就是建一个网站所需技术点及其能满足的需求的这种列表说明啊
    RIcter
        8
    RIcter  
       2014-01-27 23:09:01 +08:00
    @vvniu
    用一个简单的web.py的blog来说,python/web.py/jinja2/html/css/js/jq,然后把web.py写的MVC一点

    具体例子也有好多 :)
    cocorosiekz
        9
    cocorosiekz  
       2014-01-27 23:11:07 +08:00
    你这问题问的就让人不知所云。。。你把这几个名词找官方的tutorial做一做不都明白了
    vvniu
        10
    vvniu  
    OP
       2014-01-27 23:21:25 +08:00
    @RIcter 还是不太懂。。。。后头的路咋走啊。。。
    RIcter
        11
    RIcter  
       2014-01-27 23:36:24 +08:00
    @vvniu 多看呐..我当初走了不少弯路..=。=
    alexapollo
        12
    alexapollo  
       2014-01-27 23:46:24 +08:00
    这问题问的主题太泛泛了。。django这么屌的框架,ajax这么屌的技术,rest这么屌的设计。。
    alexrezit
        13
    alexrezit  
       2014-01-28 08:16:27 +08:00   ❤️ 1
    你还是先把 CPP 作业弄明白了吧.
    vvniu
        14
    vvniu  
    OP
       2014-01-28 08:56:04 +08:00
    @alexrezit 话说你终于换掉了那个巨丑的头像。。。欣慰啊
    alexrezit
        15
    alexrezit  
       2014-01-28 08:58:43 +08:00
    @vvniu
    你懂什么. 没品位.
    yyfearth
        16
    yyfearth  
       2014-01-28 09:20:10 +08:00   ❤️ 5
    @vvniu 就技术而言,没有什么是必要的,完全是看需求而定,比如 Django 就没必要啊,你完全可以用 Python 里面更加轻量的框架。
    说道 AJAX 之前,先说 JS。为什么要在页面里面使用 JS?
    按照你之前的回复,任何事情,不是都只要用 Form 提交到服务器,然后服务器返回 HTML 结果不就好了,为什么要用 JS?
    如果你解决了这个问题,那么用 JS 的途中,有些事情必须由服务器来处理,但是你又不希望用户看到页面在不停的刷新,那么怎么办呢?AJAX
    用了 AJAX 了,那么服务器端就必须提供访问的接口,允许提交参数并且返回 JSON 或者 XML 数据(而不是完整的 HTML 页面),什么方案最合适?RESTful
    如果你做的东西完全不需要这些东西,只是简单的 Form 提交,然后显示页面,那么自然这些东西都是没有必要了。

    补充一下 loading 童鞋的任务:
    注册 Form 里面有个 input 用来填写用户名,
    用户在填写完这个 input 之后,要立即验证这个用户名的有效性:
    是否不为空,是否符合要求(比如最短最长,有无特殊字符),并且是否可用(服务器端验证是否用户名已经存在),
    如果符合这些要求,那么这个 input 变成绿色;否则变成红色,并且在旁边写出理由(不用 alert 对话框),同时在这个输入框变绿之前,不允许用户点击提交
    注意:由于这个时候用户还在继续填写 Form,所以如果页面刷新,用户的动作会被打断而感到困扰,因此要求这个过程不能有页面的刷新。

    另外加一个更加难的任务:
    一个 input 要求提供自动完成功能,比如你填写了一个人名的一部分,那么它会显示出一个下拉列表,里面显示最多10个包含输入文字的数据库里面已有人名
    并且你可以不停的输入,那么下拉列表里面的候选人名会随着你的输入而改变
    (你可以参考一下 Google 或者 百度的搜索框)

    这两个任务你如何完成?
    pythoner
        17
    pythoner  
       2014-01-28 09:30:25 +08:00
    别整天纠结这纠结那,老老实实多撸几年代码吧。
    qiukun
        18
    qiukun  
       2014-01-28 09:30:50 +08:00
    @alexrezit alex 快来教我写 CPP
    ichou
        19
    ichou  
       2014-01-28 09:33:47 +08:00
    感觉restful没必要么? 楼主一定没有设计过接口之类的
    lecher
        20
    lecher  
       2014-01-28 11:37:30 +08:00
    正好我踩过这个坑了,我分享一下我的感受吧。
    第一个版本的时候图开发速度懒得拆分模块,页面我全都是在服务端生成的,所有的请求都是用form提交到服务器。
    这是第一个坑,提示不够人性化,用户提交的数据出错的时候,要在返回页面重新渲染不同的错误提示很繁琐。为了跳过这个坑,引入了javascript模板去渲染页面。显示给用户的页面拆分成了模板和数据渲染两块,开发速度提升了很多。这个时候就已经需要用到ajax去向接口请求数据了。不过这样的数据渲染对seo不是很有利,搜索引擎对javascript渲染出来的页面基本抓取不到。
    但是上线之后,不够用啊,用户请求太多,单机不好抗,又要做负载均衡把请求带宽也分摊出去,为了易于扩展,需要填充数据的地方全部改成ajax异步请求。同时后端做读写分离,敏感操作都要加锁,开多台从机。
    目前正在趟第三个坑,备案,因为网站最开始图省事,用的快速备案,每三个月备案就会被注销一次,为了能在备案注销期间用户正常访问,利用大部分cdn服务商备案查询不是很严格的时间差,主服务器迁移到国外用另外的域名,为了用cdn服务,网站的页面彻底做成静态化的,拿数据的ajax请求全部都改成跨域的。这个时候接口的设计优势就凸显出来了,早期设计得好的接口,分离的时候就很方便,打包一下就可以了,倒是最开始第一版为了省事全在model层打包的操作拆分的时候费了点时间。

    restful 配合 ajax 请求开发的时候易于复用,同时易于扩展,放单机上面优势不明显,扩展到多机了优势就暴涨了。
    kfll
        21
    kfll  
       2014-01-28 11:50:32 +08:00 via iPad
    不知道楼主看的什么资料,推荐下这个
    https://developer.mozilla.org/zh-CN/docs/AJAX
    akinoniku
        22
    akinoniku  
       2014-01-28 17:10:47 +08:00
    @alexrezit alex和我做galgame啦,有demo了哦
    akinoniku
        23
    akinoniku  
       2014-01-28 17:13:04 +08:00
    有一个很明显的优势是,restful服务可以轻易开发各种客户端
    RIcter
        24
    RIcter  
       2014-01-28 17:45:06 +08:00
    @akinoniku 233又在拉人了ww
    loading
        25
    loading  
       2014-01-28 18:29:05 +08:00 via iPhone
    @yyfearth 感谢补充,我太烦躁,LZ太浮躁!
    chloerei
        26
    chloerei  
       2014-01-28 18:42:15 +08:00   ❤️ 1
    以喷代问,就有很多人帮整理资料送上门了。
    vvniu
        27
    vvniu  
    OP
       2014-02-04 10:53:41 +08:00
    @yyfearth 感谢,一听就明白了
    @lecher 同样感谢,估计你不说我也还得照着坑踩一遍。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2713 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 12:31 · PVG 20:31 · LAX 04:31 · JFK 07:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.