錯誤環境:
1,ajax 發送 post 請求調用 views 的視圖
xfzajax.post({ 'url': '/xfzauth/signup/', 'data': { 'telephone': telephone, 'username': username, 'img_captcha': imgCaptcha, 'password1': password1, 'password2': password2 }, 'success': function(result) { ...... } })
2,視圖中處理 ajax 發送過來的請求
# 注冊 @require_POST def signup_view(request): form = SinupForm(request.POST) if form.is_valid(): # 表單驗證成功 telephone = form.cleaned_data.get('telephone') username = form.cleaned_data.get('username') password = form.cleaned_data.get('password1') user = User.objects.create_user(username=username, password=password, telephone=telephone) login(request, user) return resful.ok(message='注冊成功!') else: # 表單驗證失敗 errors = form.get_errors() return resful.params_error(message='表單驗證失敗!')
3,錯誤信息
- 瀏覽器 console:jquery-3.3.1.min.js:2 POST http://127.0.0.1:8000/xfzauth/signup/ 500 (Internal Server Error)
- 瀏覽器 Network - XHR:發現一個 signup/ 錯誤,點開后發現 :'dict' object has no attribute 'set_cookie'
4,經過各種百度總結
views層的函數返回值的基本限制:
1,第一個參數必須是 request
2,必須返回 HttpResponse 類的一個實例(對象)
3,只返回了字典類型的數據但沒有用HttpResponse包裹
4,return語句沒有 render template 或者 render json
參考博客:https://www.cnblogs.com/AndrewYin/p/11185902.html