我在模板中有两个嵌套的 for 循环。我需要获取自父 for 循环开始以来进行的总迭代次数。仅当子 for 迭代时,计数器才需要递增。
例如:
每个循环从 1 到 3(包含)
父循环 - 第一次迭代
子循环 - 第三次迭代
想要的结果:3
父循环 - 第二次迭代
子循环 - 第一次迭代
想要的结果:4
有什么方法可以使用标准 Django 模板标签来做到这一点吗?如果没有,我有什么选择?
我该如何打破以下行?该PEP8指引并不能使它我很清楚.
confirmation_message = _('ORDER_CREATED: %(PROPERTY_1)s - %(PROPERTY_2)s - %(PROPERTY_3)s - %(PROPERTY_4)s') % {'PROPERTY_1': order.lorem, 'PROPERTY_2': order.ipsum, 'PROPERTY_4': order.dolor, 'PROPERTY_5': order.sit}
Run Code Online (Sandbox Code Playgroud) 我有一个Facebook signed_request,通过订阅该auth.login事件和用户使用Facebook登录按钮登录后收到
我解码后,signed_request我有以下信息:
{'issued_at': 1318492701,
'code': 'AQCXI5aiyYtYLFNtkYhtKwDhO02lP[truncated]',
'user_id': '100000xxxxxxxxx',
'algorithm': 'HMAC-SHA256'}
Run Code Online (Sandbox Code Playgroud)
我在signed_request文档中找不到.这是什么code以及它的用途是什么?
我认为它可能用于获取此线程中所述的授权代码,但同时signed_request我还在登录事件的响应中收到用户的访问令牌.
我在单个文件中有我的模型:
models
\
|__init__.py
|event.py
|a_thing.py
|...
Run Code Online (Sandbox Code Playgroud)
在__init__.py我导入每个模型,然后我设置信号处理.
对于Event模型我需要一些post_save处理.
这是截断版本__init__.py:
from django.db.models.signals import post_save
from django.dispatch import receiver
from core.models.event import Event
# Event
@receiver(post_save, sender = Event)
def event_post_save(sender, dispatch_uid = 'nope', **kwargs):
print kwargs.get('created')
print '------'
Run Code Online (Sandbox Code Playgroud)
每当我Event通过控制台保存时,post_save打印的信息就会打印一次,但每当我使用管理界面时,它都会被打印两次.这可能是因为我admin.py也在里面导入模型.
有没有解决方法,以便我可以从管理界面保存事件对象,而无需post_save两次触发?
我有两个jQuery数组initialList和newList.
我首先比较它们:
initialList == newList
Run Code Online (Sandbox Code Playgroud)
这回来了false.
然后我逐个元素地比较:
$.each(initialList, function(idx, element){ console.log(element == newList[idx] )});
Run Code Online (Sandbox Code Playgroud)
每个比较都是true.
因此,如果所有元素都相同,为什么在第一次比较中返回false?
我在网格布局中有一个QCheckbox,定义如下:
self.isSubfactorCheckbox = QtGui.QCheckBox('Is &subfactor', self)
Run Code Online (Sandbox Code Playgroud)
默认情况下,该复选框位于"Is subfactor"文本的左侧.我希望将其移至案文右侧.
我试过玩次控制位置,但无济于事.
self.isSubfactorCheckbox.setStyleSheet('QCheckBox::indicator{subcontrol-origin: content; subcontrol-position: top right;}')
Run Code Online (Sandbox Code Playgroud)
这会将复选框向右移动(它仍然在文本的左侧),但它会将文本向右推出窗口的边缘.
这无助于将文本移到右侧:
self.isSubfactorCheckbox.setStyleSheet('QCheckBox::text{subcontrol-origin: content; subcontrol-position: top left; }')
Run Code Online (Sandbox Code Playgroud)
一个解决方案是创建一个QLabel并在其右侧添加复选框,但我没有找到一种方法来在QLabel中加下划线字母,以便用户知道哪个是快捷键.我已经尝试用字母前缀字母和/或将它们包装在<u> </u>标签中.
我仍然只想使用QLabel,但是如何在没有文本被推出的情况下将复选框切换到文本的右侧.
我有一个类用于绘制事物然后将它们保存到文件中.这是它的简化版本:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
class Test():
def __init__(self, x, y, filename):
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(x, y, 'D', color='red')
ax.set_xbound(-5,5)
ax.set_ybound(-5,5)
plt.savefig('%s.png' % filename)
test1 = Test(1,2, 'test1')
test2 = Test(2,4, 'test2')
Run Code Online (Sandbox Code Playgroud)
结果如下:
TEST1

TEST2

问题是test2图像也有来自test1的点.图表是在循环中动态生成的,因此我无法对图号进行硬编码.
我可以创建一个计数器并将其传递给类构造函数,但我想知道是否有更优雅的方法来执行此操作.我尝试删除test1对象,但没有做任何事情.
我有一个Django User模型的元类,我用它来添加额外的方法(过度简化的版本):
# project.models.pie_lover.py
from django.contrib.auth.models import User
class PieLover(User):
class Meta:
app_label = "core"
proxy = True
def likes_pie(self):
return True
Run Code Online (Sandbox Code Playgroud)
在我看来,我希望登录PieLover,看看他是否喜欢馅饼(愚蠢的事情要做,因为PieLover总是喜欢馅饼,但在现实世界的情况下,情况可能不是这样).我的问题在于Django登录用户的方式,我使用内置login(request)函数,因此存储的对象request.user是一个User对象,而不是PieLover.
# project.views.like_pie.py
from ..models.pie_lover import PieLover
def index(request):
pie_lover = request.user
if pie_lover.likes_pie():
print "Try pie, try!"
else:
print "BLASPHEMER!"
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,Django告诉我该User对象没有likes_pie预期的方法,因为request.user它不是一个PieLover实例.
作为一个快速的解决方法,我只是得到PieLover与其相同的ID,User但这意味着额外的数据库命中.
如何PieLover在请求中默认使用Django ?我在想,而不是进行另一个数据库查询来获取正确的PieLover对象来创建一个新PieLover对象并request.user在初始化时传递给它,但我不知道这是什么意思.
我有以下模型(简化):
class Location(models.Model):
name = models.CharField(max_length=100)
is_ok = models.BooleanField()
class Profile(models.Model):
name = models.CharField(max_length=100)
location = models.ForeignKey(Location)
class AnotherThing(models.Model):
name = models.CharField(max_length=100)
location = models.ForeignKey(Location)
Run Code Online (Sandbox Code Playgroud)
我使用的ModelForm允许用户添加/编辑Profile和AnotherThing项目数据库.简化版:
class ProfileForm(ModelForm):
class Meta:
model = Profile
widgets = {'location': CustomLocationWidget()}
class AnotherThingForm(ModelForm):
class Meta:
model = Profile
widgets = {'location': CustomLocationWidget()}
Run Code Online (Sandbox Code Playgroud)
简化的代码CustomLocationWidget是这样的:
class CustomLocationWidget(Input):
def __init__(self, *args, **kwargs):
super(CustomLocationWidget, self).__init__(*args, **kwargs)
def render(self, name, value, attrs = None):
output = super(CustomLocationWidget).render(name, value, attrs)
output += 'Hello there!' …Run Code Online (Sandbox Code Playgroud) django ×4
python ×2
arrays ×1
django-admin ×1
django-forms ×1
facebook ×1
jquery ×1
matplotlib ×1
pyqt ×1
pyqt4 ×1
qcheckbox ×1
qt ×1