一、模板类型错误:

错误原因:在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常见出错解决方案汇总-乾颐堂的更多相关文章

  1. Django中的元类-乾颐堂

    看Django(1.6)的Form相关源代码时比较迷惑,于是节选了django.forms.forms.py中的几个代码片段来分析Django中是怎么使用元类的: 1 2 3 4 5 6 7 8 9 ...

  2. 乾颐堂7月HCIE、CCIE通过名单

    拼多多都上市了,现在很多培训机构也流行公用一张PASS了,山寨总是山寨的,不脚踏实地总是欺骗自己7月(自然月)乾颐堂通过22名学员,每个考试日通过一名HCIE.CCIE 转载于:https://blo ...

  3. json.dumps错误:'utf8' codec can't decode byte解决方案-乾颐堂

    一次在使用json.dumps()过程中,出现错误提示: ERROR:"UnicodeDecodeError: 'utf8' codec can't decode byte 0xe1 in ...

  4. Python 执行js的2种解决方案-乾颐堂

    第1种方案 SpiderMonkey是Mozilla项目的一部分,是一个用C语言实现的JavaScript脚本引擎, 该引擎分析.编译和执行脚本,根据JS数据类型和对象的需要进行内存分配及释放操作:利 ...

  5. SecureCRT 下MySQL中文乱码问题终极解决方案-乾颐堂

    一.查看Linux主机系统字符集 命令: echo $LANG [root@pythontab.com ~]# echo $LANG [root@pythontab.com ~]# en_US.UTF ...

  6. python动态捕获异常-乾颐堂

    在讨论动态捕获异常时让我大吃一惊的是,可以让我找到隐藏的Bug和乐趣... 有问题的代码 下面的代码来自一个产品中看起来是好的抽象代码 - slightly(!) .这是调用一些统计数据的函数,然后进 ...

  7. python高性能编程方法一-乾颐堂

    阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. ...

  8. 使用python管理Cisco设备-乾颐堂

    今天发现一个老外使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令. 下载后主要有3个文件: Systems.py 定义了一些不同设备的操作系统及其常见命令. Conne ...

  9. 使用python进行汉语分词-乾颐堂

    目前我常常使用的分词有结巴分词.NLPIR分词等等 最近是在使用结巴分词,稍微做一下推荐,还是蛮好用的. 一.结巴分词简介 利用结巴分词进行中文分词,基本实现原理有三: 基于Trie树结构实现高效的词 ...

随机推荐

  1. Java--mysql实现分页查询--分页显示

    当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库sql语句的limit条件实现分组查询sql语句大概形式为: select * from table limit ...

  2. Windows下搭建Nginx图片服务器

    在项目最开始,上传图片的时候,服务器先保存原图再使用ImageMagick生成上传图片缩略图,这种方法有很多缺点,例如生成的缩略图的大小是固定的,不能动态请求指定大小的缩略图. 虽然有非常多的图片云存 ...

  3. appium历史版本下载地址

    https://github.com/appium/appium-desktop/releases

  4. 汇编_指令_LEA和MOV的区别

    就是目标地址传送指令: 将一个近地址指针写入到指定的寄存器.格式: LEA reg16,mem16 其中reg16必须是一个16位通用寄存器,mem16必须是一个存储器,执行这个指令后,就将mem16 ...

  5. Linux学习笔记 - Shell 控制语句

    if 语句 语法: #!/bin/bash a= b= if [ $a -eq $b ] then echo "a 等于 b" elif [ $a -gt $b ] then ec ...

  6. 使用wifi网卡笔记3---工具wpa_supplicant(STA模式)

    1.  wpa_supplicant介绍 supplicant是恳求者的意思,是wpa的发起者,是发送认证请求的设备(手机),手机--AP--认证服务器,可用于上述4种"认证/加密" ...

  7. 对于Oracle中Number类型的字段映射成Java中的具体类型的问题

    我在Oracle中给一个用户Id字段设置为Number类型,使用JDBC在完成ORM的时候,以为其可以自动转换为Integer,因为我的POJO类id使用的就是Integer.但事实是,我在测试的时候 ...

  8. cinder backup ceph的配置和使用

    Backup 是将 volume 备份到别的地方(备份设备),将来可以通过 restore 操作恢复. 初看 backup 功能好像与 snapshot 很相似,都可以保存 volume 的当前状态, ...

  9. fiddler的介绍

    一.Fiddler是一个http协议代理工具,主要有以下功能: 1.监控http/https流量.截获http/https请求 2.查看并调试截获到的请求 3.伪造请求与响应 4.测试网站性能 5.解 ...

  10. 第八章 分布式配置中心:Spring Cloud Config

    Spring Cloud Config 是 Spring Cloud 团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, 它分为服务端与客户端两个部分. 其中服 ...