property和class有method什么区别?据我了解,属性是在创建对象时计算的。方法在我调用时进行计算?还是有其他区别?例如,我有一个property在我的class Product():
@property
def total_ammount_in_store(self):
consignments = self.product.package.consignments
total_ammount = 0
for consignment in consignments:
total_ammount += consignment.package_ammount
Run Code Online (Sandbox Code Playgroud)
渲染某些页面时,例如传递一些产品给{'products':Product.objects.filter(expiration_data < datetime.now())
我:例如,我不需要total_ammount_in_store每次获取的实例时都进行计算Product。如果我在模板{{product.total_ammount_in_store}}中调用它时只需要计算该怎么办?可能吗?甚至方法都可以计算对象的创建位置?
接下来的问题是:我将一些带有 ajax 的发布数据发送到服务器。这个数据看起来像:
data = {
form : $(this).serialize(),
some_array: [2,3,4,1]
}
Run Code Online (Sandbox Code Playgroud)
如何在 Django 中获取表单对象?request.POST['form']返回一个带有表单的字符串。我正在尝试使用import json图书馆。
但是,当我运行时
value = json.load(request.POST['some_array']),
form = json.load(request.POST['form'])
它不起作用。
打印request.POST['form']返回以下内容:
u'csrfmiddlewaretoken=I3LWAjfhZRGyd5NS3m9XcJkfklxNhxOR& address_city=%D0%9A%D0%B8%D1%97%D0%B2& address_street=2& address_building=3& delivery_time=2015-05-15'
我创建了一个自定义用户并添加is_driver了检查我的用户是否属于的权限Driver's Group.
class CustomUser(AbstractUser):
mobile = models.CharField(max_length=16)
address = models.CharField(max_length=100)
class Meta:
permissions = (
("is_driver", "Can access driver's page")
)
Run Code Online (Sandbox Code Playgroud)
但是,当我跑manage.py makemigrations,然后manage.py migrate,它会抛出一个错误:ValueError: too many values to unpack.我是权限的新手,也许还有其他一些方法来添加权限Group.怎么了?
我有一个函数从某个站点获取当前美元货币:
def update_currency(request):
import urllib2
import ast
from django.conf import settings
s = urllib2.urlopen('https://api.privatbank.ua/p24api/pubinfo?exchange=&json&coursid=11').read(1000)
data = ast.literal_eval(s) #parse string list to list
settings.CURRENCY_USD = float(data[2]['sale'])
return redirect(reverse('manager_page'))
Run Code Online (Sandbox Code Playgroud)
经理按下按钮更新货币.但是,如果经理忘记这样做,那么货币就不是实际的了.所以我需要在某个时间每天调用一次这个函数.怎么实现呢?
我正在节省货币settings.py,因为这种方法update_currency需要几秒钟才能从服务器获得货币,而且每次客户购买时都不需要它