сделать контроллер в odoo для обработки json - PullRequest
0 голосов
/ 14 марта 2020

Я новичок в odoo и создал модуль с командой scaffold следующим образом:

"C: \ Program Files (x86) \ Odoo 11.0 \ python \ python .exe" "C: \ Program Files (x86) \ Odoo 11.0 \ server \ odoo-bin" scaffold api4 "C: \ Users \ Carlos \ Desktop \ custom_addons"

и при создании этого базового перенаправления контроллер работает нормально

# - * - coding: utf-8 - * -
from odoo import http
from odoo.http import request
import json
class Api4 (http.Controller):
    @ http.route ('/ api4 / api4 /', auth = 'public', website = True)
    def index (self):
        return request.redirect ('/ web /')

, но когда я создаю еще один @ http.route для получения json и могу обрабатывать ваши данные, он не работает для меня, и тот, который я делал ранее, останавливается работает.

    @ http.route ('/ api / json_get_request', auth = 'public', type = 'json', csrf = False)
    def jsontest (self, ** kw):
        return {'attribute': 'test'}

код: basi c, но я хотел посмотреть, будет ли при отправке json возвращаться {'attribute': 'test'}, и вместо этого он вернет следующее:

{
    "jsonrpc": "2.0",
    "id": null,
    "error": {
        "code": 404,
        "message": "404: Not Found",
        "data": {
            "name": "werkzeug.exceptions.NotFound",
            "debug": "Traceback (most recent call last): \ n File \" C: \\ Program Files (x86) \\ Odoo 11.0 \\ server \\ odoo \\ http.py \ ", line 653, in _handle_exception \ n return super (JsonRequest, self) ._ handle_exception (exception) \ n File \ "C: \\ Program Files (x86) \\ Odoo 11.0 \\ server \\ odoo \\ http.py \", line 312, in _handle_exception \ n raise pycompat.reraise (type (exception), exception, sys.exc_info () [2]) \ n File \ "C: \\ Program Files (x86) \\ Odoo 11.0 \\ server \\ odoo \\ tools \\ pycompat.py \ ", line 86, in reraise \ n raise value.with_traceback (tb) \ nwerkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. \ n ",
            "message": "404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.",
            "arguments": [],
            "exception_type": "internal_error"
        },
        "http_status": 404
    }
}

ошибка почтальона

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Привет, Карлос Альберто Флорио Луис,

1) Clear all the cache and history in your browser.

2) keep only one database  for use and remove other databases

или

1) Use **--db-filter dabase-name** to load a single database.

И убедитесь, что в вашем маршруте определено, что нет пропуска ( '/ api / json_get_request) ').

Спасибо

0 голосов
/ 14 марта 2020

Добавьте -d или --db-filter в вашей команде odoo-bin, чтобы выделить только одну базу данных. Например, python3 odoo-bin --addons-path addons,mymodules -d newdatabase. Насколько я знаю, API с auth='public' вызывает такого рода ошибки при наличии нескольких баз данных odoo.

Альтернативное решение - вы можете использовать конечную точку с auth='user'. Сначала вам нужно будет получить логин повара ie. Подробнее об этом: Как подключиться к базе данных Odoo из приложения android

...