Django常见出错解决方案汇总-乾颐堂
一、模板类型错误:
错误原因:在models中漏掉了return:
class UserProfile(models.Model):
"""
功能说明: 扩展用户
---------------------------------------------------------------------------
修改人 修改时间 修改原因
------------------------------------------------------------------------------
BeginMan 2013-05-05
"""
user=models.OneToOneField(User,blank=True,null=True,related_name='user',verbose_name=_(u'用户'))
company_name=models.CharField(u'企业(或代理商)名称',max_length=30, default='未知') #企业商名称
product=models.ForeignKey(Product, blank=True,null=True,verbose_name=_(u'产品')) #产品
class Meta:
verbose_name = _(u'配置')
verbose_name_plural = _(u'用户配置')
def __unicode__(self):
【这里】_(u'%(user_name)s') % {'user_name':self.user.username}
这里加上return即可。
二、url相关错误
、静态文件无法访问,如样式出不来
css样式总出不来,折腾了一个多小时,原来,urlpatterns 写成这样:
urlpatterns = patterns('',
(r'^ $','login.msg.index'), #首页
)
#登录注册
urlpatterns = patterns('',
(r'^accounts/register/$','login.msg.register_page'), #注册
(r'^accounts/login/$','login.msg.login'), #登录
(r'^accounts/logout/$','django.contrib.auth.views.logout',{'next_page':'/'}), #Django提供一个专用于处理登出表单函数logout
(r'^accounts/register/success/$','django.views.generic.simple.direct_to_template',{'template':'registration/register_success.html'}), #注册成功
)
#admin后台管理
urlpatterns += patterns('',
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/', include(admin.site.urls)),
)
#静态文件的访问
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_SITE}),
(r'^upload_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
)
我把 [登录注册] url后面也写成 = 而并非+= ,这就造成了url覆盖,所以就加载不了静态文件,同时首页也会打不开。
三、编码错误
、错误类型如下:
DjangoUnicodeDecodeError at /admin/books/book/
'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128). You passed in <Book: [Bad Unicode data]> (<class 'books.models.Book'>)
解决方案:
混淆了 python2 里边的 str 和 unicode 数据类型。
(0)、你需要的是让编码用实际编码而不是 ascii
(1)、对需要 str->unicode 的代码,可以在前边写上
import sys
reload(sys)
sys.setdefaultencoding('utf8')
把 str 编码由 ascii 改为 utf8 (或 gb18030)
(2)、python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii
参考:http://vososo.com/vo/558
四、其他错误
、Django POST请求错误forbidden(403) CSRF verification failed. Request aborted
在 settings.py 中的
MIDDLEWARE_CLASSES 设置下 添加
'django.middleware.csrf.CsrfResponseMiddleware',
重新 runserver. OK
重点参考:http://blog.csdn.net/feng88724/article/details/7221449
我用的是django1.2.3,当使用session时,也会像上面出错,这时把下面注释掉即可:
# 'django.middleware.csrf.CsrfViewMiddleware', #这段代码理应注释掉,在使用session的时候
、login:login() takes exactly 1 argument (2 given)
这在登录视图函数的时候特别常见,原因就是函数login与login模块的名字冲突,如登录url这样写:
(r'^account/login/$', 'login'), #登录
那么,对应的视图函数如下:
def login(request):
"""
功能说明: 登 录
------------------------------------------------------------
开发者 修改时间 修改原因
------------------------------------------------------------
beginman 2013-06-05
"""
if request.method == "POST":
try:
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username,password=password)
if user is not None:
if user.is_active:
login(request,user)
return HttpResponse('ok')
else:
return HttpResponse('error')
except Exception,e:
log.error("login:%s" % str(e))
return render_to_response('account/login.html')
当然如果这样写,不要忘记导入:
from django.contrib.auth import authenticate, login
这样就坏事了,因为出现了两个login.这就导致了上面的问题,解决办法有两个,
、修改login视图函数的名称和对应的url中。如webLogin
、导入设置:from ..login as _login 这样也行,别忘了都要改过来。
、无法跳转
如,我想登录。然后登录成功后跳转到主页,如上:把上面代码改写成这样
.....
if user.is_active:
login(request,user)
return HttpResponseRedirect('/')
....
但是却没有实现跳转,如下:
这里并不是跳转写错了,而是没有注意到我这个登录界面是ajax POST形式的,代码如下:
//登录
function _submit(){
var username = $("input[name='username']").val();
var password = $("input[name='password']").val();
if (username == ""){
art.dialog({content: '用户名不能为空',time :1.5});
}else if(password == ""){
art.dialog({content: '密码不能为空',time :1.5});
}else{
$.post('/account/login/',{'username':username,'password':password},function(data){
if (data =='error'){
art.dialog({content: '用户名或密码错误',time :1.5});
}
});
}
}
Query.post( url, [data], [callback], [type] ) :
如果返回,它只返回一个字符串。所以并不能在后台跳转。
解决方法是: return HttpResponse('ok'),通过接受返回的Ok 来在前台实现跳转。
http://www.qytang.com/cn/list/28/422.htm
http://www.qytang.com/cn/list/28/421.htm
http://www.qytang.com/cn/list/28/420.htm
http://www.qytang.com/cn/list/28/417.htm
http://www.qytang.com/cn/list/28/416.htm
http://www.qytang.com/cn/list/28/407.htm
http://www.qytang.com/cn/list/28/403.htm
http://www.qytang.com/cn/list/28/404.htm
http://www.qytang.com/cn/list/28/397.htm
http://www.qytang.com/cn/list/28/396.htm
http://www.qytang.com/cn/list/28/395.htm
http://www.qytang.com/cn/list/28/394.htm
Django常见出错解决方案汇总-乾颐堂的更多相关文章
- Django中的元类-乾颐堂
看Django(1.6)的Form相关源代码时比较迷惑,于是节选了django.forms.forms.py中的几个代码片段来分析Django中是怎么使用元类的: 1 2 3 4 5 6 7 8 9 ...
- 乾颐堂7月HCIE、CCIE通过名单
拼多多都上市了,现在很多培训机构也流行公用一张PASS了,山寨总是山寨的,不脚踏实地总是欺骗自己7月(自然月)乾颐堂通过22名学员,每个考试日通过一名HCIE.CCIE 转载于:https://blo ...
- json.dumps错误:'utf8' codec can't decode byte解决方案-乾颐堂
一次在使用json.dumps()过程中,出现错误提示: ERROR:"UnicodeDecodeError: 'utf8' codec can't decode byte 0xe1 in ...
- Python 执行js的2种解决方案-乾颐堂
第1种方案 SpiderMonkey是Mozilla项目的一部分,是一个用C语言实现的JavaScript脚本引擎, 该引擎分析.编译和执行脚本,根据JS数据类型和对象的需要进行内存分配及释放操作:利 ...
- SecureCRT 下MySQL中文乱码问题终极解决方案-乾颐堂
一.查看Linux主机系统字符集 命令: echo $LANG [root@pythontab.com ~]# echo $LANG [root@pythontab.com ~]# en_US.UTF ...
- python动态捕获异常-乾颐堂
在讨论动态捕获异常时让我大吃一惊的是,可以让我找到隐藏的Bug和乐趣... 有问题的代码 下面的代码来自一个产品中看起来是好的抽象代码 - slightly(!) .这是调用一些统计数据的函数,然后进 ...
- python高性能编程方法一-乾颐堂
阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. ...
- 使用python管理Cisco设备-乾颐堂
今天发现一个老外使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令. 下载后主要有3个文件: Systems.py 定义了一些不同设备的操作系统及其常见命令. Conne ...
- 使用python进行汉语分词-乾颐堂
目前我常常使用的分词有结巴分词.NLPIR分词等等 最近是在使用结巴分词,稍微做一下推荐,还是蛮好用的. 一.结巴分词简介 利用结巴分词进行中文分词,基本实现原理有三: 基于Trie树结构实现高效的词 ...
随机推荐
- net start mongodb发生系统错误2 系统找不到指定的文件
安装mongodb时, 将mongodb 作为系统服务启动 net start mongodb,报错发生系统错误2 系统找不到指定的文件 . 查找原因是因为,系统服务的可执行文件地址有误. 修改服务地 ...
- (转)jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
本文转载自:http://hedyn.iteye.com/blog/856040 在JDBC中调用SQL Server中的存储过程时出现如下异常: com.microsoft.sqlserver.jd ...
- Timesten 日常管理命令合集
Timesten 日常管理命令合集 以下所有操作都是基于TT 11 版,早前版本本人没用过,命令是否适用我不清楚啊! 各类服务管理 一.TT的启停 停服务: 1.停止复制与cache 进程: ...
- 【BZOJ】1012: [JSOI2008]最大数maxnumber /【洛谷】1198(线段树)
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...
- Mac Terminal终端光标的快捷键操作
2016年08月18日 18:26:06 阅读数:4217 Mac Terminal终端和linux上终端光标的快捷键操作是一样的,都是来自Emacs这个神级的编辑器,由于我以前vim用的多,没怎么用 ...
- BGP中IBGP和EBGP的区别和联系
我们知道,在自治系统内部使用IGP路由协议:而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议).BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP ...
- 局部加权线性回归(Locally weighted linear regression)
首先我们来看一个线性回归的问题,在下面的例子中,我们选取不同维度的特征来对我们的数据进行拟合. 对于上面三个图像做如下解释: 选取一个特征,来拟合数据,可以看出来拟合情况并不是很好,有些数据误差还是比 ...
- stm32通信概述
本文提到的内容有以下几个方面: 通信概述 串口通信 I2C通信 CAN通信 SPI通信 I2S通信 USB通信 其他通信 一.通信概述 按照数据传送方式分: 串行通信(一条数据线.适合远距离传输.控制 ...
- 「小程序JAVA实战」小程序注册界面的开发(29)
转自:https://idig8.com/2018/08/27/xiaochengxujavashizhanxiaochengxuzhucejiemiandekaifa29/ 小程序基本所有的常用组件 ...
- RHCE7 学习里程-1.配置IP,DNS
一.安装系统完成 1.系统安装完成之后不同于 6 的 ifconfig 命令.7 使用ip add ,这个跟网络设备配置端口IP 有点类似. 使用 ip add 查看网卡编号 cd /etc/s ...