本篇文章首席CTO笔记来给大家介绍有关django怎么适应手机屏幕以及django 手机自适应的相关内容,希望对大家有所帮助,一起来看看吧。
本文目录一览:
1、django websocket2、django适不适合做手机app后台3、移动前端开发和 Web 前端开发的区别是什么4、Django和Flask这两个框架在设计上各方面有什么优缺点5、如何django快速开发自适应管理系统django websocket
做个比喻, 如果说A是服务端, B是客户端, 现在要在A家里吃火锅, 虽然A说你人来就行, 但是B心想总得带点东西过去, 于是去了市场.
先到了蔬菜店, B想买点菠菜, 但又怕A家里已经有了, 于是给A打电话
B: "我带点菠菜过去吧?"
A: "好"
然后挂断. 过一会儿到了水产区
B: "我带点虾过去吧?"
A: "不用"
...如此反复多了之后A突然发现自己确实少准备了一些东西, 于是A给主动给B打了电话
A: "我忘准备蘸料了, 你买点, 然后先别挂掉"
...
A: "再买瓶酒"
...
这就是websocket了
django当让也提供对websocket的支持, 虽然这似乎不是他更擅长的东西. 我们可以通过channels实现websocket连接
诸如上述例子的场景都是合适的场景
举例来说的话比如聊天室, 每个人发送的消息都要实时显示在别人的屏幕上.
比如说数据监控, 波动状态也要实时的呈现在屏幕上, 而不是依赖于使用者自己刷新.
需要安装 channels , asgi_redis , asgiref , channels_redis . 后三个未必都需要装, 记不太清了, 总之安装过程都在channels的使用文档上.
INSTALL_APPS 中需要加上 "channels" , 需要注意的是因为这是一个list, 是有先后顺序的, 最好把它加在第一个.
这里我们的channel通过redis实现, 要在 settings.py 中配置
这里还有点小坑, 官方文档里的hosts不是这种格式, 是 "uri" 这种模式, 但是如果你在设置redis密码时机智的设置了特殊符号( '#$%' 这种), 你就会发现redis的 uri 直接就用不了了, 期间尝试各种方法, 转义什么的也试了都不行, 然后去github上开了个issue, 结果作者说我们是通过 aioredis 连接的, 你去找他们的文档吧....
然后就找到了这种方式.
常规的WSGI不支持websocket, 所以还需要配置ASGI
ASGI_APPLICATION = 'project.routing.application'
同wsgi的配置一样, 这是指向 project 文件夹下 routing.py 文件的 application
这里建议大家跟这官方教程的Tutorial走一遍. 有个比较悲剧的地方就是网上可以搜到许多channels使用指南, 大多都是搭个简易聊天室什么的, 然而你用起来可能发现存在各种报错, 因为channels升了2.0之后更改了一些方法, 而那些教程里基本全都是1.x的版本.
简单说下, 首先 startapp 叫 chat , 假如这里我们没有进行前后端分离, 里面有 templates , 两个 html : index 和 room 分别对应首页和某一个聊天室
新建 consumers.py 来写 websocket 方法
如上, connect 和 disconnect 含义分别如函数名. 因为是聊天室, 所以同一个聊天室内的人应该消息共享, 用 room_group_name 来区分所在的频道.
receive 和 chat_message 是对消息的处理. 当一个用户发送消息时, 前端把消息通过websocket发送过来, receive 收到消息提取关键内容, 通过 chat_message 发送给组内的所有连接. 这时保持连接的所有组内人员都会收到这条消息推送, 前端收到推送再显示在屏幕上.
定义websocket的地址
类似于 django 的 url ( consumers.py 就类似于 views.py ), 同级新建 routing.py
统一用ws/来区分websocket的连接
剩下常规的页面配置和django一样
views.py :
urls.py :
注意: 如果网站是http, 连接使用ws, 如果是https要修改成wss
剩下的自己找资料吧, 笔者对前端了解的不多
本地的话 runserver 就好了, 但是在线上还是得更改启动方式应对高并发.
传统的 uwsgi 不支持 websocket .
gunicorn 好像可以同时支持 websocket , 但是性能不太ok
这里我们用 daphne
这里需要额外开个服务, 专门负责处理websocket.
ingress中要配置路由跳转
django适不适合做手机app后台
当然可以,django是python中功能最全的web框架,有创建API后台的插件
另外你也可以用Falcon这个框架写,这个是专业写api 的
移动前端开发和 Web 前端开发的区别是什么
可以分成两部分理解
1.服务器端开发,也叫后台开发,这是唯一的,对应不同的平台,他负责数据的分发与存储,和一些逻辑的处理.逻辑处理的多少由业务的复杂程度决定。服务端相对独立,与平台没啥关系.
2..1中不同的平台指web平台、移动设备平台等,移动设备又可分为andriod平台、iPhone平台等
每个平台都有自己的规范和开发技术。web平台的规范是键盘+鼠标,开发技术是html+css+javascript;移动设备平台的规范是键盘+手指(触摸和手势),技术iphone是Objective-C,android是java。
业界很少有说移动web前端开发的,都是移动web开发.而web app特指的是用html5技术开发,之所以叫web app是因为他比较接近客户端应用程序的用户体验,可以和系统深度融合,调用一些只有客户端才能调用的功能(比如在移动设备上利用html5开发出的网页可以访问电话、摄像头等本地功能).
通常你看到的一些文章中会提到web app 和native app,这里的web app指的是mobile web app,而移动web和web开发没本质的区别,但需要不同的开发框架,以解决在移动设备上的适配问题和一些特殊的操作以及功能调用。
最后总结一下,web开发利用的是基于浏览器的网页语言技术,native app开发利用的是基于操作系统的程序语言技术,web app介于两者之间.当然现在比较流行混合型app,这个可以多百度一下.
Django和Flask这两个框架在设计上各方面有什么优缺点
django大而全,flask小而美。
django基本可以算作网站后端的一揽子解决方案。。。用这一套框架,基本就可以解决可能遇到的所有问题。学习成本自然也要高于flask。如果你希望用python一门语言,就做到所有事情,最靠谱的解决方案,其实基本就只有django。。。学精django,对于python来讲,基本就等于“得道升天”。从此便可以“python大神”自居。
flask则是轻量级框架,容易学习,并易于扩展,但自身只能做到基本面,并不能解决可能发生的所有问题。。需要搭配其他框架,共同解决问题。。。所以精flask,只能算完成了一个学习阶段。。尽管“得了道”却还只是个“半仙”
flask的另一个好处在于flask严格遵循mvc设计模式。。将来如果要学习JAVA或.NET上的MVC框架,思维方式可以直接套过去。。django遵循的所谓“mvt”设计模式,有点奇葩,要转到MVC,习惯上需要适应一下。这点其实很重要。。。因为单凭python,目前其实不容易找到比较好的工作。。。为了保住饭碗,同时学习下JAVA或.NET,其实是很普遍的现象。
如何django快速开发自适应管理系统
django 是符合mvc模式的, 不过在django里面叫mtv , 即模型, 模板, 视图, django的哲学, 目前我的理解是, 简单, 简洁,还有耦合, 我用它写过一个博客, 体会最大的是他本身的通用视图给了很大的帮助, 代码少了很多, django内置的组件
结语:以上就是首席CTO笔记为大家介绍的关于django怎么适应手机屏幕和django 手机自适应的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。