나는 다음과 같은 모델이 있습니다데이터 쓰기 (Odoo 9.0)
class LibraryBook(models.Model):
_name = 'library.book'
name = fields.Char('Title', required=True)
date_release = fields.Date("Release Date")
author_ids = fields.Many2many("res.partner", string="Authors")
내가 Odoo에 새로 온 사람과 POST에서 내 모델에 데이터를 저장하는 방법의 기초를 이해하려고 노력을 같은 요청하는 나는 방법과 같이 false
에 내 컨트롤러에 csrf
매개 변수를 설정하여이 일을 발견
curl -i -X POST --data "name=Odoo%20-%20Much%20Mystery,%20Wow&author_id=Doge" http://0.0.0.0:8069/test
다음
[...]
@http.route('/test', type='http', auth='public',methods=['POST'], website=True, csrf=False)
def test(self, **kwargs):
record = request.env['library.book'].sudo()
record.create(kwargs)
csrf=false
을 설정하는 것을 피할 수있는 방법이 있는지 궁금합니다. 일반적으로 이렇게하는 것이 좋지 않습니다. 또한, 그걸 제거하려면 무엇이 필요합니까 .sudo()
? csrf=false
을 설정하지 않으면 Invalid CSRF token
으로 400 BAD REQUEST
이됩니다. sudo()
을 삭제하면 500 INTERNAL SERVER ERROR
이됩니다. 우리가) (sudo는로 I 가정 예제 코드
의 방법을 모델링하는 우리의 모든 통화를 왜 요리 책Odoo 개발에서는 사용자의 auth='none'
부족 하나의 예를 말한다는 것입니다 API의 POST 요청을 기대할 수 있습니다. 사용자와 연관시킬 수 있나요?
sudo()
?나는 이것에 대한 설명을 매우 감사하게 생각합니다. 폼이 외부 타사하여 (예를 들어, REST API를 엔드 포인트, 지불 게이트웨이 콜백)를 액세스 할 경우
- : UPDATE
그래서 난 그냥 this (라인 817) 발견 CSRF
보호를 해제하고 (필요한 경우 사용자 자신의 보호 기능을 구현해야 함)
csrf=False
매개 변수를에 전달해야합니다데코레이터. 내가sudo
에 대한 단 하나의 질문 개방 잎을 추측.
이러한 유형의 문제를 통해 작업은 복잡 할 수 있습니다. jsonrpc 또는 xmlrpc를 고려 했습니까? –