一、模板型別錯誤:
錯誤原因:在models中漏掉了return:
class UserProfile(models.Model):
modp=To ,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'產品')) # _(u'配置')
verbose_name_plural = _(u'使用者設定')
def __unicode__(self):
【這裡】_(u'%(user_name)s') % {selfuser_name':f.user.user.com即可。
二、url相關錯誤、靜態文件無法訪問,如樣式出不來
(r'^ $','login.msg.index'), #首頁
)
, 寫。
(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'}), #註冊成功
)
管理
static.serve', {'document_root': settings.MEDIA_SITE}),
(r'^upload_media/(?P
.*)$', 'django.views.static.serve', {'P.*)$', 'django.views.static.serve', {'document_': doct. .MEDIA_ROOT}),
)
我把[登入註冊] url後面也寫成= 而並非+= ,這就造成了url覆蓋,所以就加載不了靜態文件,同時首頁也會打不開。
三、編碼錯誤、錯誤類型如下:(
)混淆了python2 裡邊的str 和unicode 資料類型。
(0)、你需要的是讓編碼用實際編碼而不是ascii
(1)、對需要str->unicode 的代碼,可以在前邊寫上
sys
reload(sys)
sys.setdefaultencoding('utf8')
(2)、python3區分了unicode str 和byte arrary,並且預設編碼不再是ascii
參考:http://vososo.com/vo/558
、其他錯誤
(403) CSRF verification failed. Request aborted
重點參考:http://blog.csdn.net/feng88724/article/details/7221449
我用的是django1.2.3,當使用session時,也會像上面出錯,這時把下面註解掉即可:
# 'django.middleware.csrf.CsrfViewMiddleware', #這段程式碼理應註解掉,使用使用生活的時候將 130,0006 年程式碼
(r'^account/login/$', 'login'), #登入
@中那麼,對應的視圖
if request.method = = "POST":
ST user = authenticate(username=username,password=password )
if user is not None: if user ) return HttpResponse('ok') 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:
但是卻沒有實現跳轉,如下:
//登录 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}); } }); } }
如果傳回,它只會傳回一個字串。所以並不能在後台跳轉。
解決方法是: return HttpResponse('ok'),透過接受返回的Ok 來在前台實現跳躍。