首页 > 其他分享 >Django常见出错解决方案汇总

Django常见出错解决方案汇总

时间:2023-08-03 17:03:05浏览次数:47  
标签:username name 汇总 Django user django login password 出错


一、模板类型错误:

错误原因:在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

重点参考:

 

我用的是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 来在前台实现跳转。

标签:username,name,汇总,Django,user,django,login,password,出错
From: https://blog.51cto.com/u_6186189/6950899

相关文章

  • 安卓UI相关开源项目库汇总
    awesome-github-android-ui是由OpenDigg整理并维护的安卓UI相关开源项目库集合。我们会定期同步OpenDigg上的项目到这里,也欢迎各位提交项目给我们。如果收录的项目有错误,可以通过issue反馈给我们。这里的项目Star数不是实时更新的,一般是一周更新一次。内容抽屉菜单ListViewWebVie......
  • pycharm使用技巧汇总
    pycharm使用技巧汇总0、安装pycharm略。1、指定虚拟环境 2、创建代码块pycharm自定义代码片段https://www.cnblogs.com/andy9468/p/8988501.htmlpycharm中python模板代码自动生成https://www.cnblogs.com/andy9468/p/8302701.html 3、远程调试远程调试忽略上传文件......
  • 宝塔面板设置系统防火墙禁止国外访问方法汇总
    问题描述:通过宝塔面板设置系统防火墙禁止国外访问方法1.Nginx/Apache防火墙开启防止境外访问开关 windows系统 linux系统  *注:实测中打开了宝塔防火墙禁止外国访问,但还是可以访问网站,咨询官方后解决方法是打开全局的禁止海外访问后,还需要点击单个网站配置打开对应的开......
  • 外键字段的增删改查,多表查询,正反向的概念,子查询,多表查询之连表查询(基于双下划线
    外键字段的增删改查#多对多的外键增删改查图书和作者是多对多,借助于第三张表实现的,如果想绑定图书和作者的关系,本质上就是在操作第三方表#如何操作第三张表问题:让你给图书添加一个作者,他俩的关系可是多对多#多对多的增删该查#让你给图书id=2添加一个作者id=1b......
  • 数组双指针技巧汇总 [labuladong-刷题打卡 day2]
    https://labuladong.github.io/algo/challenge/ji-chu-tiao-zhan/day02/快慢指针26.删除有序数组中的重复项两个指针分别维护符合条件数组和待删除数组,当快指针移动时将符合条件元素插入已完成数组后即可。通过这两天对双指针的练习,可以发现很多双指针算法其实也是一种迭代算......
  • django自定义错误补获
    settings.pyREST_FRAMEWORK={'EXCEPTION_HANDLER':'xxx.custom_exception_handler',}新建.py文件,名称任意 xxx.pyfromdjango.dbimportDatabaseErrorfromrest_frameworkimportstatusfromrest_framework.responseimportResponsefromrest......
  • Django----三种返回值
    1、return render(request,'login.html')返回HTML的内容给前端浏览器2、returnredirect('/register/')重定向前端到url=register3、return HttpResponse(dl_len)django想前端返回json数据......
  • 常用c++ STL 汇总
    常用STL:vector变长数组,倍增的思想初始化://初始化vector<int>a;vector<int>a(n);vector<int>a[n];vector<int>a(n,0);//长度为n,值为0操作:size()//返回元素个数empty()//返回是否为空clear()//清空front()/back()//返回第一个/最后一个元素push_bac......
  • python django中的权限控制
    权限控制基于form组件实现1.配置文件编写权限关系表有权限控制,意味着要登录,需要提前把登录页面放到白名单,在setting.py文件写入白名单内的路径不做访问控制和登录认证WHITE_URL=["/web/login/","/web/sms_login","web/sms_send","/web/logout/"]在setting.py文件写......
  • PHP设计模式汇总
    PHP设计模式汇总没想到啊,没想到。自己竟然坚持了下来,完成了设计模式深入的学习,并且输出了23篇用php演示的设计模式的文章。但这不是最主要的,更深层次的收获是顺便背下了这些模式的定义及类图。在深入学习了设计模式之后,对Laravel等框架的架构理解也更清楚明了了。就像我在很多模式......