我是Python和Django的初学者.我安装了django-oscar.然后我配置它并启动服务器,它的工作原理.
现在,我不明白how to add a product?
仪表板上有一个按钮Create new product.但是为了添加新产品,它要求选择产品类,我在给定的下拉选项中找不到任何产品类.
为我提供一个如何在django-oscar中添加产品的演示示例.
尝试使用Inlines在Admin Dashboard上获取自定义视图.下面是代码
from django.contrib import admin # noqa
from oscar.core.loading import get_model
from oscar.apps.catalogue.admin import *
CategoryAttribute = get_model('catalogue', 'CategoryAttribute')
CategoryAttributeValue = get_model('catalogue', 'CategoryAttributeValue')
Category = get_model('catalogue', 'Category')
class CategoryAttributeInline(admin.TabularInline):
model = CategoryAttributeValue
fk_name = 'category'
extra = 1
class CategoryAdmin(admin.ModelAdmin):
inlines = [CategoryAttributeInline,]
admin.site.register(CategoryAttributeValue)
admin.site.register(CategoryAttribute)
admin.site.register(Category, CategoryAdmin)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
TypeError: 'MediaDefiningClass' object is not iterable
我的代码有什么问题?
我正在尝试使用Django Oscar建立一个基本的电子商务站点,并且遇到了困难。问题的大部分与缺乏如何使用有意义的付款方式(例如Paypal,Stripe,Braintree)挂钩以及我从未听说过的晦涩难懂的付款方式有关。
无论哪种方式,我都尝试使用django-oscar-paypal并遵循其文档。Paypal Express部分似乎可以正常工作,因为该按钮会出现,并且类似要签出和处理的内容。
但是,如果我选择定期进行结帐(希望用卡付款),则会转到下一页(括号中的信息是我的)
这是以下模板的产品:
{% extends "checkout/checkout.html" %}
{% load i18n %}
{% block title %}
{% trans "Payment details" %} | {{ block.super }}
{% endblock %}
{% block checkout_nav %}
{% include 'checkout/nav.html' with step=3 %}
{% endblock %}
{% block checkout_title %}{% trans "Enter payment details" %}{% endblock %}
{% block order_contents %}{% endblock %}
{% block shipping_address %}{% endblock %}
{% block shipping_method %}{% endblock %}
{% block payment_method %}{% endblock %} …Run Code Online (Sandbox Code Playgroud) 试图访问产品的价格,使用文档.但是获得属性错误.
>>> from oscar.apps.partner import strategy, prices
>>> from oscar.apps.catalogue.models import *
>>> product = Product.objects.get(pk=1)
>>> info = strategy.fetch_for_product(product)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'module' object has no attribute 'fetch_for_product'
Run Code Online (Sandbox Code Playgroud)
要查看策略的所有属性,我会这样做
>>> dir(strategy)
>>> ['Base', 'D', 'Default', 'DeferredTax', 'FixedRateTax', 'NoTax', 'PurchaseInfo',
'Selector', 'StockRequired', 'Structured', 'UK', 'US', 'UseFirstStockRecord',
'__builtins__', '__doc__', '__file__', '__name__',
'__package__', 'availability', 'namedtuple', 'prices']
Run Code Online (Sandbox Code Playgroud)
所以fetch_for_product不属于策略属性.现在我如何获取特定产品的价格?
如何扩展 django-oscar 客户模型字段?我已扩展注册表以包含更多字段,在apps/customer/forms.py
class EmailUserCreationForm(forms.ModelForm):
email = forms.EmailField(label=_('Email address'))
password1 = forms.CharField(
label=_('Password'), widget=forms.PasswordInput,
validators=password_validators)
password2 = forms.CharField(
label=_('Confirm password'), widget=forms.PasswordInput)
#### The extra fields I want to add #####
first_name = forms.CharField(label=_('First name'))
last_name = forms.CharField(label=_('Last name'))
business_name = forms.CharField(label=_('Business name'))
business_address = forms.CharField(label=_('Business address'))
city = forms.CharField(label=_('City'))
Run Code Online (Sandbox Code Playgroud)
我还延长了[AbstractUser][1]在的领域apps/customer/abstract_models.py。
class AbstractUser(auth_models.AbstractBaseUser,
auth_models.PermissionsMixin):
"""
An abstract base user suitable for use in Oscar projects.
This is basically a copy of the core AbstractUser model but …Run Code Online (Sandbox Code Playgroud) 我想用于django-oscar建立一个网上商店,该商店将提供两种主要语言。
Oscar'sView chart翻译对于常规字段(例如or )效果很好Add to chart,但不支持自定义元素,例如Categoriesor Product's Titles。
我想要翻译:
CategoryProduct.TitleProduct.Description我想出了两种方法:
方法一——修改django-oscar模板
我可以根据奥斯卡的翻译文档创建自定义翻译集。
然后django.po用翻译后的类别和产品标题填写适当的文件。
不幸的是,我将不得不覆盖一些模板,因为它们trans默认不使用 templatetag。例如我会改变。
<a href="{{ category.get_absolute_url }}">{{ category.name }}</a>
Run Code Online (Sandbox Code Playgroud)
到
<a href="{{ category.get_absolute_url }}">{% trans category.name %}</a>
Run Code Online (Sandbox Code Playgroud)
在这个奥斯卡的模板中。
这种方法的主要问题是需要覆盖模板、更新django.po以及使用每个要翻译的新条目进行编译。
方法二——使用django-modeltranslation
使用这个插件。
问题
我是否错过了一些内置django-oscar's功能,或者我必须使用上述方法之一?
django locale translation django-modeltranslation django-oscar
我正在为我们业务的电子商务部分研究 Django Oscar。所需的功能之一是我们需要在一个 Oscar 实例上托管多个商店,即每个店主都应该管理自己的产品、自己的合作伙伴等。并且不应该访问其他所有者的内容。
Google 表示从 0.6 版本开始就有此功能:https://django-oscar.readthedocs.io/en/releases-0.6/howto/multi_dealer_setup.html
但当前版本(截至今天的1.5)并没有提到这个功能。奥斯卡后期版本如何实现多租户?
是否可以在"django-oscar"中完全禁用'oscar.apps.catalogue.reviews'应用程序的功能?
正如我所看到的那样,它在许多地方使用,所以简单的删除INSTALLED_APPS工作不起作用,也许最简单的方法就是将其隐藏在模板中.有更好的解决方案吗?
我正试图找出在我的主页内显示产品的最佳方式.我正在使用django-oscar附带的沙箱构建我的网站(我从Github克隆了该项目).
我发现默认主页是由"促销"应用控制的.但是,我的产品只显示在' http:// localhost:8000/catalog '中(由'catalog'应用程序控制).
有没有办法在我的主页上显示产品?或者我是否必须更改控制主页的默认应用程序?(在这种情况下,我该怎么做?)
编辑1:我相信我找到了解决方案.您可以按照教程如何自定义现有视图 ; 但是,您需要进行一些更改,因此您的代码必须如下所示:
from oscar.apps.catalogue.views import CatalogueView
class HomeView(CatalogueView):
template_name = 'promotions/home.html'
Run Code Online (Sandbox Code Playgroud)
这样您就可以访问"promotions/home.html"中的产品.我不确定这是否是实现此方法的最佳方式,如果其他人有替代方案,请发表评论.
我正在处理 django 中的表单,一旦填写完毕,就会向用户发送一封电子邮件,但我收到以下错误:
我已经检查了我的代码,我的问题来自这个函数:
def send_manually_exception_email(request, e):
exc_info = sys.exc_info()
reporter = ExceptionReporter(request, is_email=True, *exc_info)
subject = e.message.replace('\n', '\\n').replace('\r', '\\r')[:989]
message = "%s\n\n%s" % (
'\n'.join(traceback.format_exception(*exc_info)),
reporter.filter.get_request_repr(request)
)
mail.mail_admins(subject, message, fail_silently=True, html_message=reporter.get_traceback_html())
Run Code Online (Sandbox Code Playgroud)
我能做些什么?
django ×10
django-oscar ×10
python ×6
e-commerce ×2
braintree ×1
django-forms ×1
email ×1
locale ×1
paypal ×1
python-2.7 ×1
python-3.x ×1
translation ×1