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

时间: 2024-11-02 22:37:39

Django常见出错解决方案汇总-乾颐堂的相关文章

Django常见出错解决方案汇总

一.模板类型错误: 错误原因:在models中漏掉了return: [这里]加上return即可. 二.url相关错误 静态文件无法访问,如样式出不来 css样式总出不来,折腾了一个多小时,原来,urlpatterns 写成这样: 我把 [登录注册] url后面也写成 = 而并非+= ,这就造成了url覆盖,所以就加载不了静态文件,同时首页也会打不开. 三.编码错误 错误类型如下: 解决方案: 混淆了 python2 里边的 str 和 unicode 数据类型. (0).你需要的是让编码用实际

乾颐堂安德华为数通HCNA真题解析版(第2部分)

HCNA真题解析视频即将上线,敬请关注本博客以及乾颐堂官网书接上文:16 Interface GigabitEthernet0/0/1 Port link‐type trunk Port trunk allow‐pass vlan 2 to 4094 根据如上所示的命令输出,下列描述中正确的是()(多选)A GigabitEthernet0/0/1 不允许 VLAN1 通过B GigabitEthernet0/0/1 允许 VLAN1 通过C 如果要把 GigabitEthernet0/0/1

乾颐堂既有老腊肉也有小鲜肉,欢迎大家来学习,大学生如何学习HCIE,答案来咯

前边给大家分享了工作20余年的刘大哥的经历,下面给大家带来20出头没毕业小伙子的在乾颐堂的学习经历 9月4号开学第一天收到了一份特别的礼物,PASS HCIE 在HCIE的路上要一步一个脚印走过来,我从去年暑假之前加入乾颐堂这个大家庭,与很多在路上的HCIE一样,从对TCP/IP的一无所知,到现在MPLE.BGP.组播全都能够深入掌握,这个和乾颐堂是分不开的. 刚到乾颐堂学习的时候,直接是暑假在光大会展脱产,本来我是学生,其余的时候还要学习别的东西,所以只有暑假有充裕的时间要把握住.2个月的时间

全网唯一华为无线HCNA真题解析版题库,来自乾颐堂安德

本部分内容来自互联网.通过它,您可以同哦过华为认证HCNA-WLAN无线(H12-311)考试.后续视频讲解会上传至51CTO学院,其他学员可以通过乾颐堂官方咨询或者群645866695咨询解析版是军哥一字一字码出来的,转载请注明出处 QUESTION 1无线网络的初步应用开始于哪段时间()? A. 一次大战期间 B. 二次大战期间 C. 20世纪后期D. 2000年以后 Correct Answer: B Explanation/Reference:2战后才初步发展,战争很多时候是促进科技进步

乾颐堂安德HCIE面试真题系列20(董XG),一个失败的案例

20180720董XG杭州面试 1.ppp2.割接3.ospf中邻居建立不起来的原因 上面也是我回答问题的顺序. ppp我就按照我之前模拟面试的时候,按照题库里面往下背,这个我之前也复习到了,就在今天火车上,我还看到了,这题挺顺利,答了大概30分钟吧,中途提问过一句,就是chap认证的用户名为空的时候怎么回事和有用户名的时候分别解释下,她不问的话,我也会说的,正好她也问了,这题我感觉满分. 割接,很久之前预习过,近期也没怎么看,近期就准备理论了,就边回忆题库里面的东西边说了自己工作中碰到的机房迁

来看看军哥对HCIEv3.0预测对了多少内容吧!乾颐堂安德HCIEv3.0视频已经在线

2018年6月,我预期华为会升级数通HCIE,故而一步步的改进华为的课程体系,果不其然,华为在2018年8月末发布"预"公告,大约会在2019年1月份升级RS HCIE到3.0,一切尽在掌握之中.乾颐堂安德2018版HCIEv3.0已经开始上传51CTO它的改变按照官方原文是"HCIE-Routing&Switching V3.0的内容包括但不限于:L2及L3层网络技术.IPv4及IPv6网络协议.路由控制技术.MPLS及MPLS L3 ×××技术.组播技术.网络安全

从其他机构转投乾颐堂的同学pass感言

首先能够通过考试要感谢乾颐堂这个平台,感谢两位老师(军哥和老白),还有一起备考的兄弟.我是从其他机构过来的,之前通过了lab,一面挂了之后来了乾颐堂.首先乾颐堂的模拟面试是我通过考试的重要原因,能够真实的模拟考试环境,锻炼自己的临场表现,理清答题的思路,说白了就是考试的彩排.两道题是确定的,lab和项目,只要这两道题答好,时间说够了,理论只要了解一些,通过是没有问题的.我理论偏弱也没怎么准备,总觉的运气好,考的都会,答的都对,能够通过纯属侥幸,希望后面备考的兄弟可以不留死角,认真准备.下面我简单

乾颐堂鹏同学通过HCIE送给后来者的话

HCIE备考分享最先在考CCIE还是HCIE的时候,还是很犹豫的,CCIE至少都要到北京考试,并且我之前也考过CCNP的,感觉还是有些基础的,但是考试的成本会增加,HCIE在成都就可以考,路途等各种成本基本不用,听说面试比较难.综合考虑了一下,最终还是选择了考HCIE(想挑战一下自己).决定好以后,就开始准备考试,笔试很简单,题库刷了几遍就OK了,只要背好了,一般都是高分通过的.接下来就是备考LAB了,LAB的建议大家按照老师的方法先敲熟悉后,实现了盲敲以后(我当时都不用看拓扑就直接敲命令了),

神圣教师节再现某吹牛机构白嫖事件,乾颐堂军哥实名DISS丫的

神圣教师节再现某吹牛机构白嫖事件,我,乾颐堂军哥实名DISS这个SB机构,(注意此处的SB不是骂人,而是不良机构的首字母简写,自己脑补吧).本来高高兴兴的教师节,还收到了学员送的礼物可晚上,正在上课时候,思博白嫖事件发生了作为教书育人的某SB机构,我呵呵了,原来他们不是第一次想白嫖人家东西了,洋洋互联网真是给我们留下了不可磨灭的证据,此处给出3例,还有一些一时没有找到,果然不良果然不良啊白嫖我乾颐堂达叔的文档,大图呈上,我谢谢你为我们广而告之,但估计您初心不是如此.郑重声明:您不用白嫖了,我会把