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

2014-01-27 22:19:52 +08:00
 vvniu
6752 次点击
所在节点    Python
27 条回复
FrankFang128
2014-01-27 22:44:24 +08:00
小马过河。谁用谁知道。
RIcter
2014-01-27 22:44:29 +08:00
....嗯..不吐槽了orz..
lz多看看...看看吧...
loading
2014-01-27 22:45:12 +08:00
别理这些东西,先用jquery学习完ajax,其中你会需要json数据,然后你学一下python在返回json,然后慢慢你就接触rest了。

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

话说回来,有木有什么就是建一个网站所需技术点及其能满足的需求的这种列表说明啊
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
2014-01-27 23:11:07 +08:00
你这问题问的就让人不知所云。。。你把这几个名词找官方的tutorial做一做不都明白了
vvniu
2014-01-27 23:21:25 +08:00
@RIcter 还是不太懂。。。。后头的路咋走啊。。。
RIcter
2014-01-27 23:36:24 +08:00
@vvniu 多看呐..我当初走了不少弯路..=。=
alexapollo
2014-01-27 23:46:24 +08:00
这问题问的主题太泛泛了。。django这么屌的框架,ajax这么屌的技术,rest这么屌的设计。。
alexrezit
2014-01-28 08:16:27 +08:00
你还是先把 CPP 作业弄明白了吧.
vvniu
2014-01-28 08:56:04 +08:00
@alexrezit 话说你终于换掉了那个巨丑的头像。。。欣慰啊
alexrezit
2014-01-28 08:58:43 +08:00
@vvniu
你懂什么. 没品位.
yyfearth
2014-01-28 09:20:10 +08:00
@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
2014-01-28 09:30:25 +08:00
别整天纠结这纠结那,老老实实多撸几年代码吧。
qiukun
2014-01-28 09:30:50 +08:00
@alexrezit alex 快来教我写 CPP
ichou
2014-01-28 09:33:47 +08:00
感觉restful没必要么? 楼主一定没有设计过接口之类的
lecher
2014-01-28 11:37:30 +08:00
正好我踩过这个坑了,我分享一下我的感受吧。
第一个版本的时候图开发速度懒得拆分模块,页面我全都是在服务端生成的,所有的请求都是用form提交到服务器。
这是第一个坑,提示不够人性化,用户提交的数据出错的时候,要在返回页面重新渲染不同的错误提示很繁琐。为了跳过这个坑,引入了javascript模板去渲染页面。显示给用户的页面拆分成了模板和数据渲染两块,开发速度提升了很多。这个时候就已经需要用到ajax去向接口请求数据了。不过这样的数据渲染对seo不是很有利,搜索引擎对javascript渲染出来的页面基本抓取不到。
但是上线之后,不够用啊,用户请求太多,单机不好抗,又要做负载均衡把请求带宽也分摊出去,为了易于扩展,需要填充数据的地方全部改成ajax异步请求。同时后端做读写分离,敏感操作都要加锁,开多台从机。
目前正在趟第三个坑,备案,因为网站最开始图省事,用的快速备案,每三个月备案就会被注销一次,为了能在备案注销期间用户正常访问,利用大部分cdn服务商备案查询不是很严格的时间差,主服务器迁移到国外用另外的域名,为了用cdn服务,网站的页面彻底做成静态化的,拿数据的ajax请求全部都改成跨域的。这个时候接口的设计优势就凸显出来了,早期设计得好的接口,分离的时候就很方便,打包一下就可以了,倒是最开始第一版为了省事全在model层打包的操作拆分的时候费了点时间。

restful 配合 ajax 请求开发的时候易于复用,同时易于扩展,放单机上面优势不明显,扩展到多机了优势就暴涨了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/98531

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX