Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django social auth for facebook出现错误_Django_Django Models_Django Socialauth_Django 1.4 - Fatal编程技术网

Django social auth for facebook出现错误

Django social auth for facebook出现错误,django,django-models,django-socialauth,django-1.4,Django,Django Models,Django Socialauth,Django 1.4,我正在使用: django social auth v 0.7.19 django 1.4.3 型号。py: class UserProfile(models.Model): user = models.ForeignKey(User) username = models.CharField(max_length = 64, blank = True, null = True) last_login = models.DateField(blank = True, n

我正在使用:

  • django social auth v 0.7.19
  • django 1.4.3
型号。py:

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    username = models.CharField(max_length = 64, blank = True, null = True)
    last_login = models.DateField(blank = True, null = True)
    is_active = models.BooleanField(blank = True)
from social_auth.backends.pipeline.user import create_user


def create_user(backend, details, response, uid, username, user=None, *args,
            **kwargs):

    if user:
        return {'user': user}
    if not username:
        return None

    user, created = User.objects.get_or_create(username = username)
    profile, created = UserProfile.objects.get_or_create(user = user)

    return {
        'user': user,
        'profile' : profile,
        'is_new': True
    }
social\u auth pipeline.py:

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    username = models.CharField(max_length = 64, blank = True, null = True)
    last_login = models.DateField(blank = True, null = True)
    is_active = models.BooleanField(blank = True)
from social_auth.backends.pipeline.user import create_user


def create_user(backend, details, response, uid, username, user=None, *args,
            **kwargs):

    if user:
        return {'user': user}
    if not username:
        return None

    user, created = User.objects.get_or_create(username = username)
    profile, created = UserProfile.objects.get_or_create(user = user)

    return {
        'user': user,
        'profile' : profile,
        'is_new': True
    }
问题:

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    username = models.CharField(max_length = 64, blank = True, null = True)
    last_login = models.DateField(blank = True, null = True)
    is_active = models.BooleanField(blank = True)
from social_auth.backends.pipeline.user import create_user


def create_user(backend, details, response, uid, username, user=None, *args,
            **kwargs):

    if user:
        return {'user': user}
    if not username:
        return None

    user, created = User.objects.get_or_create(username = username)
    profile, created = UserProfile.objects.get_or_create(user = user)

    return {
        'user': user,
        'profile' : profile,
        'is_new': True
    }
  • 当我从我的模型中取出username、last_login和is_active字段时,社交身份验证会给我一个数据库错误,因为这些列是必需的。我正在使用ForeignKey用户,但它无法检测到它

  • 我正在重写social auth的create_user方法来创建我的用户及其配置文件。当函数返回时,将创建一个用户和配置文件,但仍会在错误页面上重定向。不知道为什么


  • 尝试使用以下代码更改您的配置文件创建:

    profile, created = UserProfile.objects.get_or_create(user=user, defaults={
        'username': user.username,
        'last_login': date.today(),
        'is_active': True
    })
    
    或者向这些字段添加一些默认值

    编辑:关键字参数是默认值而不是默认值