2012-03-24 60 views
0

我想是指用戶在我的Django模型AddRec(具有前端機器人) 在Django的身邊,我有這樣的代碼外鍵,Android的Django的用戶認證1

這是Django的模型,

class AddRec(models.Model): 
    user=models.ForeignKey(User) 
    about=models.CharField(User) 
    created = models.DateTimeField(auto_now_add=True) 

class AddRecForm(ModelForm): 
class Meta: 
    model=AddRec 

@login_required 
def add_record(request): 
    if request.method=='POST': 
     if not request.user.is_authenticated(): # if user is not logged in 
      response_data=[{"success": "0"}] 
      return HttpResponse(simplejson.dumps(response_data),mimetype='application/json') 
    current_user=request.User 
    description=request.POST['about'] 
    new_rec = AddRec(user=current_user,about=description) 
    new_rec.save() 
    response_data=[{"success": "1"}] 
    return HttpResponse(simplejson.dumps(response_data), mimetype='application/json') 
    else: 
     response_data=[{"success": "0"}] 
     return HttpResponse(simplejson.dumps(response_data),mimetype='application/json') 

當我用Android作爲後端執行上面的代碼時,它給了我錯誤「致命異常」。 最重要的是我無法訪問用戶在django中從Android發送的請求。

從Android身邊,我只是

nameValuePairs.add(new BasicNameValuePair("about", "123")); 

與httppost我發送數據發送數據。 即使用戶登錄,是否需要從Android端發送用戶名?

+0

[Android-Django用戶認證]的可能重複(http://stackoverflow.com/questions/9851972/android-django-user-authentication) – Caleb 2012-03-26 02:49:40

回答

0

您使用的身份驗證將會話密鑰存儲在客戶端(android)的cookie中。您是否在使用HttpClient?如果是這樣,你必須使用cookies。

另外,api應該是無狀態的。您不應該讓用戶使用Cookie登錄api。 http://en.wikipedia.org/wiki/Representational_state_transfer有幾個流行的API認證方案解決了這個問題。

您是否在發送帶請求的csrf標記?如果不是,您可以使用裝飾器明確禁用視圖的csrf保護。 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt(不推薦)

當張貼問題,請張貼錯誤日誌,回溯,基本上你看到的東西時,不走右邊的一切。