【问题标题】:Django how to save user info in model came though APIDjango如何在模型中保存用户信息来自API
【发布时间】:2018-01-30 00:30:38
【问题描述】:

我正在制作一个与 API 连接的 webapp。当用户授权我的 webapp 使用 3rd 方 API 时,API 会发送与用户相关的信息。我想将该信息保存在我的模型中以供将来使用。我不确定如何针对已登录的用户将该信息保存在模型中。这是我的代码:

views.py:

from .models import UserInfo

def auth_finish(request):
    app_session = request.session
    try:
        oa_auth = auth_flow(app_session).finish(request.GET)
        if request.method == 'GET':
            UserInfo.user = request.user # How to save this model?
            UserInfo.access_token = oa_auth.access_token # How to save this model?
            UserInfo.account_id = oa_auth.account_id # How to save this model?
            UserInfo.dbx_user_id = oa_auth.user_id # How to save this model?
        return render(request, 'index.html')
    except oauth.BadRequestException as e:
        return HttpResponse(e)

models.py

from django.contrib.auth.models import User

class UserInfo(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    access_token = models.CharField(max_length=20, blank=False)
    account_id = models.CharField(max_length=10, blank=False)
    dbx_user_id = models.CharField(max_length=10, blank=False)

信息正确地出现在我的视图中,我可以在 views.py 中使用它构建字典。如何保存这些信息?

def auth_finish(request):
    app_session = request.session
    try:
        oa_auth = auth_flow(app_session).finish(request.GET)
            user_auth_info = dict()
            user_auth_info['access_token'] = oa_auth.access_token
            user_auth_info['account_id'] = oa_auth.account_id
            user_auth_info['user_id'] = oa_auth.user_id
            user_auth_info['app_user'] = request.user
            print(user_auth_info)
        return render(request, 'index.html')
    except oauth.BadRequestException as e:
        return HttpResponse(e)

【问题讨论】:

    标签: python django


    【解决方案1】:
    from .models import UserInfo
    
    def auth_finish(request):
        app_session = request.session
        try:
            oa_auth = auth_flow(app_session).finish(request.GET)
            if request.method == 'GET':
                user_info_instance = UserInfo(user=request.user, access_token=oa_auth.access_token, account_id=oa_auth.account_id, dbx_user_id=oa_auth.user_id)
                user_info_instance.save()
            return render(request, 'index.html')
        except oauth.BadRequestException as e:
            return HttpResponse(e)
    

    【讨论】:

    • 谢谢,正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2020-08-23
    • 2022-10-22
    • 1970-01-01
    • 2020-02-11
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多