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
Python Django身份验证在生产环境中不起作用,但在本地起作用。模型不';不要使用OnetoOnefield_Python_Django_Azure_Heroku - Fatal编程技术网

Python Django身份验证在生产环境中不起作用,但在本地起作用。模型不';不要使用OnetoOnefield

Python Django身份验证在生产环境中不起作用,但在本地起作用。模型不';不要使用OnetoOnefield,python,django,azure,heroku,Python,Django,Azure,Heroku,超级用户创建工作正常,我可以在管理面板中访问它们。但是,当用户创建帐户时,他们被添加为用户,但不会传播到FacebookProfile模型中(因此我无法添加他们的id、webpull等)(他们在使用sqllite3开发时传播良好) 我正在azure上使用mysql models.py from django.db import models from django.forms import ModelForm from django.contrib.auth.models import Us

超级用户创建工作正常,我可以在管理面板中访问它们。但是,当用户创建帐户时,他们被添加为用户,但不会传播到FacebookProfile模型中(因此我无法添加他们的id、webpull等)(他们在使用sqllite3开发时传播良好)

我正在azure上使用mysql

models.py

from django.db import models

from django.forms import ModelForm

from django.contrib.auth.models import User

from django import forms


class FacebookProfile(models.Model):
     user = models.OneToOneField(User, on_delete = models.CASCADE)

     id = models.PositiveIntegerField(primary_key = True)
     webpull= models.CharField(max_length =1000, null = True)
     score = models.PositiveIntegerField(default = 0, editable = True)
     times_called = models.PositiveIntegerField(default = 0, editable = True)
     level = models.FloatField(default = 0, editable =True)
我的facebook用户表单 forms.py

我的自定义身份验证系统 auth_backend.py

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User

class PasswordlessAuthBackend(ModelBackend):

    def authenticate(self, username = None):
        try:
            return User.objects.get(username = username)
        except:
            return None
我处理Facebook API输入的参数并将其存储在模型中的视图 views.py

我的生产设置.py

  AUTHENTICATION_BACKENDS = (

        'authentication.auth_backend.PasswordlessAuthBackend',

        ('django.contrib.auth.backends.ModelBackend'),
    )
这是一种没有密码的身份验证方法


现在是模型中OnetoOneField的问题吗?我不明白为什么所有东西都在本地工作,但当我推到heroku时,唯一不起作用的是将用户传播到FacebookProfile。

id=request.POST.get('username')
看起来像是
id\ucode>不是整数,正如PositiveIntegerField字段所要求的那样。你能检查一下,如果你把它放在整数里,它会起作用吗?@Never我把Facebook返回的id存储为用户名(糟糕的做法,对不起),所以用户名是一个整数,像1002131342321
id=request.POST.get('username')
看起来像是
id
不是整数,正如PositiveIntegerField字段所要求的那样。你能检查一下,如果你把它放在整数里,它会工作吗?@neverwanner我将Facebook返回的id存储为用户名(糟糕的做法对不起),所以用户名是一个像1002131342321这样的整数
if request.method == "POST":
        print ('ive been posted')
        first_name = request.POST.get('first_name')
        last_name = request.POST.get('last_name')
        username = request.POST.get('username')
        print (first_name, last_name, username)

        facebook_user = FacebookUserForm(data=request.POST)
        facebook_profile = FacebookProfileForm()

        has_account = authenticate(username = username)
        print (has_account)

        if has_account:
            print ('this has account')
            login(request, has_account)
            return HttpResponseRedirect('/home/')
        else:

            id_ = request.POST.get('username')
            webpull = request.POST.get('webpull')


            print (id_, birthday, webpull)

            print (facebook_user)

            user = facebook_user.save()
            profile = facebook_profile.save(commit = False)
            profile.user = user
            profile.webpull = webpull
            profile.id = id_


            profile.save()



            now_has_account = authenticate(username = username)
            login(request, now_has_account)

            return HttpResponseRedirect('/home/')
  AUTHENTICATION_BACKENDS = (

        'authentication.auth_backend.PasswordlessAuthBackend',

        ('django.contrib.auth.backends.ModelBackend'),
    )