Oscar API Settings

All oscarapi settings are defined in oscarapi.settings.

To set these settings in you django settings.py file, prefix them with OSCARAPI_. So oscarapi.settings.EXPOSE_USER_DETAILS becomes: OSCARAPI_EXPOSE_USER_DETAILS

Main settings

OSCARAPI_BLOCK_ADMIN_API_ACCESS

Default: True

Useful in production websites where you want to make sure that the admin api is not exposed at all. oscarapi.settings.BLOCK_ADMIN_API_ACCESS

OSCARAPI_EXPOSE_USER_DETAILS

Default: False

The Login view (GET) and the owner field in the BasketSerializer and CheckoutSerializer expose user details, like username and email address. With this setting you can enable/disable this behaviour.

OSCARAPI_ENABLE_REGISTRATION

Default: False

Enables the register endpoint so it’s possible to create new user accounts.

OSCARAPI_LAZY_REMOTE_FILE_REQUEST_HEADERS

Default:

default={
    "User-Agent": "django-oscar-api/<version>"
}

Changes the headers for the admin api when downloading images.

Serializer settings

Most of the model serializers in Oscar API have a default set of fields to use in the REST API. If you customized the Oscar models you can reflect this customization by adding settings for this serializer.

For example, the RecommendedProduct serializer is defined as following:

class RecommmendedProductSerializer(OscarModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name='product-detail')

    class Meta:
        model = Product
        fields = settings.RECOMMENDED_PRODUCT_FIELDS

When you add the following section to your settings.py you will add the ‘title’ field as well:

OSCARAPI_RECOMMENDED_PRODUCT_FIELDS = ('url', 'title')

Note that you need to prefix the settings with OSCARAPI_ to make them work in your django settings file.

The following serializers have customizable field settings:

Basket serializers

class oscarapi.serializers.basket.BasketSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]
class oscarapi.serializers.basket.BasketLineSerializer(*args, **kwargs)[source]

This serializer computes the prices of this line by using the basket strategy.

class oscarapi.serializers.basket.VoucherSerializer(*args, **kwargs)[source]

Checkout serializers

class oscarapi.serializers.checkout.OrderSerializer(*args, **kwargs)[source]

The order serializer tries to have the same kind of structure as the basket. That way the same kind of logic can be used to display the order as the basket in the checkout process.

class oscarapi.serializers.checkout.OrderLineSerializer(*args, **kwargs)[source]

This serializer renames some fields so they match up with the basket

class oscarapi.serializers.checkout.InlineSurchargeSerializer(*args, **kwargs)[source]
class oscarapi.serializers.checkout.UserAddressSerializer(*args, **kwargs)[source]

Login serializers

class oscarapi.serializers.login.UserSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Product serializers

class oscarapi.serializers.product.OptionSerializer(*args, **kwargs)[source]
class oscarapi.serializers.product.ProductLinkSerializer(*args, **kwargs)[source]

Summary serializer for list view, listing all products.

This serializer can be easily made to show any field on ProductSerializer, just add fields to the OSCARAPI_PRODUCT_FIELDS setting.

class oscarapi.serializers.product.RecommmendedProductSerializer(*args, **kwargs)[source]
class oscarapi.serializers.product.ChildProductSerializer(*args, **kwargs)[source]

Serializer for child products

class oscarapi.serializers.product.ProductSerializer(*args, **kwargs)[source]

Serializer for public api with strategy fields added for price and availability

class oscarapi.serializers.product.ProductAttributeSerializer(*args, **kwargs)[source]
class oscarapi.serializers.product.ProductAttributeValueSerializer(*args, **kwargs)[source]