TypeError: view must be a callable or a list/tuple in the case of include().

这里写图片描述
打开微信扫一扫,关注微信公众号【数据与算法联盟】
转载请注明出处: http://blog.csdn.net/gamer_gyt
博主微博: http://weibo.com/234654758
Github: https://github.com/thinkgamer


背景

最近对自己大学做的一个网站进行了升级简化和美观优化

github地址:https://github.com/Thinkgamer/CyanScikit

然后之前做的时候用的是Python 2.7 + Django 1.8.6,现在这个版本对python和django都进行了升级,使用的是python 3.4+Django 1.10,然后再使用到views的函数的时候便遇到了问题

环境介绍

Django 1.10
Python 3.4
产生问题的场景是:对django的admin后台融合富文本编辑器,用的还是之前django1.8的语法例子,然后就报出了

  File "F:\github\CyanScikit\CyanScikit\urls.py", line 22, in <module>
    url(r"^uploads/(?P<path>.*)$","django.views.static.serve",{"document_root":s
ettings.MEDIA_ROOT,}),
  File "D:\Program Files\python\lib\site-packages\django\conf\urls\__init__.py",
 line 85, in url
    raise TypeError('view must be a callable or a list/tuple in the case of incl
ude().')
TypeError: view must be a callable or a list/tuple in the case of include().

思考过程

这个问题是写这篇文章的前一天晚上遇到的,但是由于好久没有碰django了,所以一时半会还不知道问题出在哪了,当时一直在想是不是python版本的关系,因为之前遇到过一个问题是,在定义django的models的时候有一个方法

def __unicode__(self):
    return self.xxx

但这个是在python2.7中的写法,在python3.X中是这样写的

def __str__(self):
    return self.xxx

所以把误区一直停留在了python版本问题上,导致走路很多弯路也没有解决这个问题
然后上网寻找答案,在这里得到了解决的办法:http://www.imooc.com/qadetail/98920
意思是在django1.10版本中views视图函数的语法出现了变化,需要先导入views视图函数,然后再引用其内部的函数,同时去掉双引号


解决办法

我的使用kindeditor富文本编辑器,使用以下语法出现错误:

from django.conf import settings
from CyanScikit.upload import upload_image
urlpatterns = [
    url(r'^admin/uploads/(?P<dir_name>[^/]+)$', upload_image, name='upload_image'),
    url(r"^uploads/(?P<path>.*)$",views.static.serve,{"document_root":settings.MEDIA_ROOT,}),  
]

对应的解决办法是修改以上部分为:

from django import views
from CyanScikit.upload import upload_image
urlpatterns = [
    url(r'^admin/uploads/(?P<dir_name>[^/]+)$', upload_image, name='upload_image'),
    url(r"^uploads/(?P<path>.*)$",views.static.serve,{"document_root":settings.MEDIA_ROOT,}),
]

OK,解决问题
注意:版本变化之后带来的语法差异


反思

在做项目的时候,思想往往会被固化在以后的某一个时间点,因为我们相信,我们对于该项技术是熟知的,导致我们不再去官网查看文档,然后就会出现一些语法上的错误,同时对于错误的问题分析上要敢于猜想错误出现的原因,并进行迅速的验证和分析,来解决问题,而不是一拖再拖
总而言之,自己还有很多不足的地方需要改善了学习,come on!

最后附两张截图吧,感兴趣的朋友可以 github

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值