- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用react-facebook-login登录facebook而不是存储数据,但它给了我一个关于“保存”的错误,我不明白为什么,我与其他应用程序使用了完全相同的结构,它工作正常,你能告诉我我做错了什么吗?
这是 models.py 代码:
class Social(EmbeddedDocument):
name = StringField()
accountId = ReferenceField(Account)
userId = StringField()
project = ReferenceField(Project)
email = EmailField()
meta = {'allow_inheritance': True}
add_date = DateTimeField(default=datetime.datetime.now)
def save(self, *args, **kwargs):
if not self.add_date:
self.add_date = datetime.datetime.now()
self.add_date = datetime.datetime.now()
return super(Social, self).save(*args, **kwargs)
class Facebook(Social):
pageId = StringField(unique=True)
View .py
class FacebookCreateView(APIView):
permission_classes = (AllowAny,)
def post(self, request):
serializer = FacebookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
序列化器.js
class FacebookSerializer(DocumentSerializer):
class Meta:
model = Facebook
fields = ('name', 'accountId','userId','pageId','project','email')
def create(self, validated_data):
facebook_account = Facebook(
accountId=validated_data['accountId'],
name=validated_data['name'],
userId=validated_data['userId'],
pageId=validated_data['pageId'],
project=validated_data['project'],
email=validated_data['email'])
facebook_account.save()
return facebook_account
我正在从前端调用
responseFacebook = (response) => {
console.log(response);
let data = new FormData(); // creates a new FormData object
data.append('name', response.name);
data.append('email', response.email);
data.append('userId', response.userID);
data.append('accountId', '5ced550e927bd2cfc01264bc');
data.append('project', '5ce5acf4ec67314c53cae53e');
data.append('pageId', 'tobeadded');
axios.post('http://127.0.0.1:8000/social/fb/', data)
.then(res => { if(res.status === 200){
console.log(res)}})
.catch(err=>console.log(err))
//window.FB.logout();
}
它给了我这个错误:
Internal Server Error: /social/fb/
Traceback (most recent call last):
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\django\views\generic\base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\rest_framework\views.py", line 495, in dispatch
response = self.handle_exception(exc)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\rest_framework\views.py", line 455, in handle_exception
self.raise_uncaught_exception(exc)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\rest_framework\views.py", line 466, in raise_uncaught_exception
raise exc
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\rest_framework\views.py", line 492, in dispatch
response = handler(request, *args, **kwargs)
File "C:\Users\Kouter\Desktop\pfeCode\backend\social_accounts\views.py", line 17, in post
serializer.save()
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\rest_framework\serializers.py", line 214, in save
self.instance = self.create(validated_data)
File "C:\Users\Kouter\Desktop\pfeCode\backend\social_accounts\serializers.py", line 18, in create
facebook_account.save()
File "C:\Users\Kouter\Desktop\pfeCode\backend\social_accounts\models.py", line 20, in save
return super(Social, self).save(*args, **kwargs)
File "C:\Users\Kouter\Desktop\pfeCode\backend\env\lib\site-packages\mongoengine\document.py", line 97, in save
self._instance.save(*args, **kwargs)
AttributeError: 'NoneType' object has no attribute 'save'
最佳答案
Document 代表 MongoDB 文档(即集合中的记录),Document 类绑定(bind)到特定集合。 EmbeddedDocument 表示嵌套在文档中的结构。
因此,根据设计,EmbeddedDocument 不会附加到任何集合,除非您将其嵌入文档中。
这意味着您无法查询或保存EmbeddedDocument类,您需要查询/保存父文档。
就您而言,您的 EmbeddedDocument 实例未附加到父 Document 类。
使您的 Social 类继承自 Document 而不是 EmbeddedDocument,并且它应该是可保存的。
关于python - 属性错误: 'NoneType' object has no attribute 'save' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56411797/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!