大家好

最近因為有需求,需要用python 架設網站
但是我又很不想從頭寫起,感覺如果有現成套件還是想用現成套件來達成
所以我找一找發現有這個 oscar framework
Domain-driven e-commerce for Django
 
這邊會大略講一下如何自訂的精神
基本上就是覆蓋類別的意思
 
官方文件這邊有說明:
 
我們可以使用以下指令產生django app
./manage.py oscar_fork_app dashboard zfshop/
 
dashboard 是要修改的功能
zfshop是自己的主APP名稱
 
django app 就是類似一個 controller
 
然後在 settings.py 加入呼叫
 
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites', #oscar
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.flatpages', #oscar
'widget_tweaks' #oscar
] + get_core_apps(['zfshop.catalogue','zfshop.dashboard','zfshop.dashboard.catalogue']) #oscar
 
然後在
zfshop/dashboard/catalogue/forms.py
 
from oscar.apps.dashboard.catalogue.forms import ProductForm as ProdForm
class ProductForm(ProdForm):

class Meta(ProdForm.Meta):
    fields = (
        'title', 'upc', 'description', 'is_discountable', 'structure', 'foodtype')
 
就可以覆蓋原本設定
所以這邊修改需要查看原本的 oscar 程式架構才可以
感覺起來是不太直覺
但是好像也只能這樣做
 
至於說使用人家寫好的 framework 來做 django 好不好?
這我覺得就見仁見智了
但是重點是一旦寫下去
就必須要一直這樣寫下去
因為繼承別人的架構可不好修改的