Android-Django аутентификация пользователя-1 - PullRequest
0 голосов
/ 24 марта 2012

Я пытаюсь отослать пользователя в качестве внешнего ключа в моей модели django AddRec (с Android на веб-интерфейсе) на стороне django У меня есть этот код,

это модель 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 в качестве бэкэнда, он выдает мне ошибку «фатальное исключение».Главное, что я не могу получить доступ к запросу, отправленному пользователем с Android в django.

Со стороны Android я просто отправляю данные с

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

и с httppost яотправка данных.Нужно ли отправлять имя пользователя со стороны Android, даже если пользователь вошел в систему?

1 Ответ

0 голосов
/ 24 марта 2012

Используемая вами аутентификация сохраняет ключ сессии в файле cookie на стороне клиента (android).Вы используете HttpClient?Если это так, вы должны использовать куки.

Кроме того, API должны быть без сохранения состояния.Вы не должны держать пользователя, вошедшего в систему, используя куки для 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 (не рекомендуется)

При публикации вопроса публикуйте журналы ошибок, трассировки, в основном все, что вы видите, когда что-то идет не так.

...