收藏 分销(赏)

Django出错解决方案汇总.docx

上传人:仙人****88 文档编号:9378663 上传时间:2025-03-24 格式:DOCX 页数:8 大小:24.33KB
下载 相关 举报
Django出错解决方案汇总.docx_第1页
第1页 / 共8页
Django出错解决方案汇总.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述
 一、模板类型错误: 错误原因:在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 参考: 四、其他错误 、Django POST请求错误forbidden(403) CSRF verification failed. Request aborted 在 settings.py 中的 MIDDLEWARE_CLASSES 设置下 添加 'django.middleware.csrf.CsrfResponseMiddleware', 重新 runserver.   OK 重点参考: 我用的是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 来在前台实现跳转。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服