V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  kellyl  ›  全部回复第 1 页 / 共 2 页
回复总数  27
1  2  
2016-10-30 23:39:47 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘 Python Web 工程师 · 机智云物联网平台
2016-10-30 12:38:49 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘 Python Web 工程师 · 机智云物联网平台
暂不考虑实习,谢谢各位
问题 +1
2016-07-13 10:22:05 +08:00
回复了 wakcc 创建的主题 酷工作 广州一年半前端求职
简历发到 kli[at]gizwits.com
2016-07-07 18:57:47 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
@Static2015 可以
2016-07-07 11:29:27 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
@Static2015 招的
2016-07-07 11:28:53 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
@lyp111332 暂时不需要实习的。
2016-07-06 22:16:26 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
@scarlex 不算不算,快来简历 : D
2016-07-06 21:17:32 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
@shenqi 不带这样,要给广告费啊
2016-07-06 21:16:02 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
@scarlex 一个例子是过度使用语言的高级特性,欠缺考虑代码的易读性和可维护性。
2016-07-06 21:12:33 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
@kingze1992 可以发简历过来看下
2016-07-06 17:15:51 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘前端开发工程师 · 机智云
2015-09-11 16:15:06 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘 Python 开发工程师 · 机智云物联网平台
@mengzhuo 我们的长链接服务器使用 Erlang 实现,部分业务使用 RabbitMQ/MQTT 。我们 Python 和 M2M 服务器交互会使用到 Websocket 和 MQ , MQ 机制在 python 使用在跟大数据交互处理时也会用到(我们有专门的大数据部门)。

Django 主要使用在 HTTP 的业务场景,比如网站开发和开发 API 开发。
2015-09-11 16:06:13 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘 Python 开发工程师 · 机智云物联网平台
@poke707 我们会有一个演讲分享
2015-09-10 13:31:11 +08:00
回复了 kellyl 创建的主题 酷工作 [广州] 招聘 Python 开发工程师 · 机智云物联网平台
@szm0816 欢迎优秀的应届生
2015-05-20 10:48:39 +08:00
回复了 OldPanda 创建的主题 Python 有没有比较好用的支持 markdown 语法的文本框
这跟Python没关系啦。预览的话使用前端markdown库,后端保存用户输入的原始值。读取的话,可以前端编译,也可以后端编译返回。
https://github.com/chjj/marked
https://github.com/evilstreak/markdown-js
2015-05-19 17:28:43 +08:00
回复了 cc7756789 创建的主题 Python Django, 基于类的视图如何继承基类的属性
@cc7756789,如果你想得到大家的帮助,首先要把问题内容格式整理好。V2EX支持markdown语法。

建议问题标题修改为「django视图类继承DetailView和TemplateView后报错」,你的问题代码可以格式化如下

<pre>
class Links(TemplateView):
_____template_name = "home/links.html"

_____def get_context_data(self, **kwargs):
__________context = super(Links, self).get_context_data(**kwargs)
__________context['link'] = Friend_Links.objects.all()
__________context['latest_article_list'] = latest_article_list
__________context['now'] = time.strftime('%Y-%m-%d %X', time.localtime())
__________context['ip'] = self.request.META['REMOTE_ADDR']
__________return context

class Detail(DetailView, Links):
_____model = Article
_____context_object_name = "ar"
_____template_name = "home/detail.html"

_____def get_context_data(self, **kwargs):
__________context = super(Detail, self).get_context_data(**kwargs)
__________context['latest_article_list'] = latest_article_list
__________context['now'] = time.strftime('%Y-%m-%d %X', time.localtime())
_____return context
</pre>


这是典型的多重继承方法属性读取顺序问题。在Python里叫"Method Resolution Order",Python的继承多重继承机制请看参考阅读(如果经常写Python面向对象的代码,一定要弄明白多重继承中C3线性继承的使用)。

我们来看一下Detail类的MRO。
>>> Detail.__mro__

....(Detail,
.... django.views.generic.detail.DetailView,
.... django.views.generic.detail.SingleObjectTemplateResponseMixin,
.... gizwits_developer.views.Links,
.... django.views.generic.base.TemplateView,
.... django.views.generic.base.TemplateResponseMixin,
.... django.views.generic.detail.BaseDetailView,
.... django.views.generic.detail.SingleObjectMixin,
.... django.views.generic.base.ContextMixin,
.... django.views.generic.base.View,
.... object)

当页面打开Detail页面时,发生了:

1. django调用视图的self.get方法
2. 根据mro找到django.views.generic.base.TemplateView.get方法,在get方法中调用self.get_context_data(**kwargs)
3. 根据mro,分别调用Detail, DetailView...中的get_context_data,当调用到django.views.generic.detail.SingleObjectMixin.get_context_data时,代码读取`self.object`,但是此时self中没有`object`属性,页面报错。因为`self.obejct`的赋值是在`django.views.generic.detail.BaseDetailView.get`做的,但是get方法被`django.views.generic.base.TemplateView.get`拦截了,导致执行不到。

如何解决(方法很多,这里简单列出两个面向对象的方法实现):

1. 调整__mro__中get的顺序。不建议。因为复杂的mro并不能够简单通过Detail(Links,DetailView)改为Detail(DetailView, Links)能够掉整的;在Detail类复写get也能够解决,但后期代码难维护。
2. 将TemplateView在__mro__中移除。这是我个人建议的方法。其实问题产生的原因是Links和DetailView都是TemplateResponseMixin的子类,交叉继承导致的。DetailView本来就有TemplateView的功能,再次继承的话容易出问题。

解决方法(使用复用的contextMixin类):

<pre>
class LinksContext(ContextMixin):

_____def get_context_data(self, **kwargs):
__________context = super(LinksContext, self).get_context_data(**kwargs)
__________context['link'] = Friend_Links.objects.all()
__________context['latest_article_list'] = latest_article_list
__________context['now'] = time.strftime('%Y-%m-%d %X', time.localtime())
__________context['ip'] = self.request.META['REMOTE_ADDR']
__________return context

class Links(TemplateView, LinksContext):
_____template_name = "home/links.html"

class Detail(DetailView, LinksContext):
_____model = Article
_____context_object_name = "ar"
_____template_name = "home/detail.html"

_____def get_context_data(self, **kwargs):
__________context = super(Detail, self).get_context_data(**kwargs)
__________context['latest_article_list'] = latest_article_list
__________context['now'] = time.strftime('%Y-%m-%d %X', time.localtime())
_____return context
<pre>


参考阅读:
http://python-history.blogspot.com/2010/06/method-resolution-order.html
https://www.python.org/download/releases/2.3/mro
2015-05-19 16:37:22 +08:00
回复了 gkiwi 创建的主题 分享发现 v2ex 支持 markdown 了!!
1
2015-05-19 16:30:00 +08:00
回复了 gkiwi 创建的主题 分享发现 v2ex 支持 markdown 了!!
&nbsp;&nbsp;1
2015-05-19 16:28:56 +08:00
回复了 gkiwi 创建的主题 分享发现 v2ex 支持 markdown 了!!
&bsp;&bsp;&bsp;
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2803 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 12:27 · PVG 20:27 · LAX 04:27 · JFK 07:27
Developed with CodeLauncher
♥ Do have faith in what you're doing.