0

私はdjangoでbackbone.jsを使用しています。アプリケーションへの最初のリクエストの直後に/、現在ログインしているユーザーを取得したいと考えています。

私はUserResourceAPI呼び出しを行うことができるように設定していますが、それは私が探していapi/v1/user/idないものを知る必要があることを意味します. id伝統的なジャンゴのリクエストビューでは、私はrequest.userオブジェクトを持っています。これはクライアント側でも利用できますrequest.userか?

編集:

私はDjangoで従来の認証を使用しているため、ユーザーを承認した後、バックボーンはそこから取得します。次のように、base.html ファイルで、現在ログインしているユーザーの一意の ID を格納する変数を作成できますか。

var user = {{user}}; // which shows the username 

これにはリスクがありますか

4

2 に答える 2

6

TastyPie クックブックの「ユーザーごとのリソースの作成」の例をご覧ください。

http://django-tastypie.readthedocs.org/en/latest/cookbook.html#creating-per-user-resources

ただし、ドキュメントは古く、API は変更されています。メソッドのシグネチャが変更され、リクエストがバンドルの属性になりました。

defauthorized_read_list(self、object_list、bundle):

からユーザーにアクセスできます。bundle.request.user

https://github.com/toastdriven/django-tastypie/issues/809も参照してください。

于 2013-03-08T01:37:01.333 に答える
0

以下は、応答のメタにユーザーIDを配置します。

def alter_list_data_to_serialize(self, request, data_dict):
    if isinstance(data_dict, dict):
        if 'meta' in data_dict:
            if request.user and request.user.pk:
                data_dict['meta']['user_id'] = request.user.pk

    return data_dict

個人的には、これを行う必要はありませんでした。ユーザーオブジェクトをページコンテキストサーバー側に配置します。単一ページのRESTfulアプリケーションの場合でも、ログイン時に標準の要求/応答(AJAXではない)を作成し、コンテンツ/コンテキストサーバー側にデータを入力します。

後続のAJAXリクエストには、SUERIDをURLで渡さないのと同じ方法でユーザーIDを含めないでくださいサーバー側のユーザーを特定し、それに応じてフィルタリングする必要があります。Djangoはこれを非常に簡単にし、AuthenticationMiddlewareを使用してユーザーを公開します。

于 2013-03-11T09:10:06.277 に答える