我正在尝试按照此解决方案,以便为模板中的日期值创建日期时间过滤器.使用babel的优点是i18n.
我已将代码插入到我的应用程序包中名为filter.py的文件中:
from f11_app import app
import babel
def format_datetime(value, format='medium'):
if format == 'full':
format="EEEE, d. MMMM y 'at' HH:mm"
elif format == 'medium':
format="EE dd.MM.y HH:mm"
return babel.format_datetime(value, format)
app.jinja_env.filters['datetime'] = format_datetime
Run Code Online (Sandbox Code Playgroud)
现在我得到的错误是:
File "/home/kave/projects/F11/Engineering/f11_app/templates/show_records.html", line 19, in block "body"
<td>{{ record.record_date|datetime }}
File "/home/kave/projects/F11/Engineering/f11_app/filters.py", line 9, in format_datetime
AttributeError: 'module' object has no attribute 'format_datetime'
Run Code Online (Sandbox Code Playgroud)
为了加载filters.py,我的最后一行f11_app的__init__.py是这样的:
from f11_app import views, filters
Run Code Online (Sandbox Code Playgroud)
我能错过什么?
我正在阅读Google应用引擎并准备样本以更好地理解它.
简而言之,用户可以记录该月中每天的条目,如日历.用户可以按月查看条目.所以一次不超过30小时.
最初我曾经使用过,db而且一对多的关系是直截了当的.
但是一旦我遇到了这个ndb,我意识到有两种方法可以建立一对多的关系.
1)结构化属性似乎就像User模型上的重复属性一样.这是否意味着如果我检索一个用户,我会自动检索她输入的所有记录?(例如整年)这不是很有效,不是吗?我想这样做的好处是你可以在一次读取操作中获得所有相关数据.
from google.appengine.ext import ndb
class User(UserMixin, ndb.Model):
email = ndb.StringProperty(required = True)
password_hash = ndb.TextProperty(required = True)
record = ndb.StructuredProperty(Record, repeated=True)
class Record(ndb.Model):
notes = ndb.TextProperty()
Run Code Online (Sandbox Code Playgroud)
2)或者我可以使用更经典的方式:
class User(UserMixin, ndb.Model):
email = ndb.StringProperty(required = True)
password_hash = ndb.TextProperty(required = True)
class Record(ndb.Model):
user = ndb.KeyProperty(kind=User)
notes = ndb.TextProperty()
Run Code Online (Sandbox Code Playgroud)
在我的用例中哪种方式更好?
我有以下DataGrid单元格,一旦底层LastTradePrice属性更改其值,我想简要地为其背景颜色设置动画.
<DataGridTextColumn Header="Last Trade Price" Binding="{Binding LastTradePrice}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
// ???
<DataTrigger Binding="{Binding LastTradePrice}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="Aqua" Duration="0:0:0.3" Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)
1)这条线<DataTrigger Binding="{Binding LastTradePrice}" Value="True">没有意义.
该属性LastTradePrice显然不是一个可以测量的布尔值value = True.如何在更新属性时触发触发器?显然我已经实现了INotification:
public double LastTradePrice
{
get { return _model.LastTradePrice; }
set
{
if (value != _model.LastTradePrice)
{
LastTradePrice = value;
OnPropertyChanged("LastTradePrice");
}
}
}
Run Code Online (Sandbox Code Playgroud)
2)如果我将整个样式定义存储在里面<Window.Resources>,我将如何访问ViewModels属性LastTradePrice?
非常感谢
我想嘲笑以下CanonPerson模型
def compute(self, is_send_emails, test_email_address):
cpses = CanonPerson.objects.filter(persons__vpd=6,
persons__country="United States",
persons__role__icontains=';IX;').prefetch_related("persons").using("global")
for cp in cpses:
...
Run Code Online (Sandbox Code Playgroud)
我很CanonPerson.objects.filter遗憾如何模仿以返回一个可交换的集合,以便我可以继续.
这是我到目前为止所做的:
def test_X_count(self):
with mock.patch('apps.dbank.models.CanonPerson.objects.filter') as canon_patch:
mock_cp = mock.MagicMock(spec=CanonPerson)
mock_person = mock.MagicMock(spec=Person)
mock_person.vpd = 6
mock_cp.country = "United States"
mock_cp.role = ";IX;"
mock_cp.persons.add(mock_person)
canon_patch.objects.filter.return_value = [mock_cp] // ???
oi = OptinInvites()
oi.compute(False, None)
oi.get_most_recent_email.assert_called_once_with(1)
Run Code Online (Sandbox Code Playgroud)
在计算功能中,我可以看到cpses是MagicMock类型.然而,它不可迭代,for loop之后,只是跳过它.我想通过设置返回值,[mock_cp]我会创建一个可迭代列表?
我不明白teardownFactoryBoy + Django 是如何工作的。
我有一个这样的测试用例:
class TestOptOutCountTestCase(TestCase):
multi_db = True
def setUp(self):
TestCase.setUp(self)
self.date = datetime.datetime.strptime('05Nov2014', '%d%b%Y')
OptoutFactory.create(p_id=1, cdate=self.date, email='inv1@test.de', optin=1)
def test_optouts2(self):
report = ReportOptOutsView()
result = report.get_optouts()
self.assertEqual(len(result), 1)
self.assertEqual(result[0][5], -1)
Run Code Online (Sandbox Code Playgroud)
setUp对所有测试运行一次是否正确?现在,如果我进行第二次测试并且在运行之前需要一个干净的状态,我该如何实现?谢谢
我如何 mock.patch 一个普通的字典 {} ?
我想检查标题是否设置为 {'Content-Type': 'application/json'}。
def get(self):
result = Spider.get_news_urls()
for k, v in result.iteritems():
response = requests.get(v)
xml = response.text()
headers = {'Content-Type': 'application/json'}
data = ''
taskqueue.Task(url='/v1/worker', headers=headers, payload=json.dumps(data)).add(queue_name='itagnewstasks')
return 'success', 200
Run Code Online (Sandbox Code Playgroud)
以下单元测试似乎成功地修补了 dict。但我有一个 {},我需要修补它。
@mock.patch('__builtin__.dict')
@mock.patch('requests.get')
def test_header_is_set_to_json(self, req_get, x):
gen = Generator()
gen.get()
x.assert_called_with()
Run Code Online (Sandbox Code Playgroud)
我想另一种方法是模拟补丁taskqueue.Task()并比较它是否headers= {'Content-Type': 'application/json'}作为参数被调用。
我在将大文本保存到 MySQL 数据库时遇到问题。
该模型如下所示(请参阅列收据):
class Receipt(db.Model):
id = db.Column(db.Integer, primary_key=True)
product_id = db.Column(db.String(200))
type = db.Column(Enum(ReceiptType), nullable=False)
receipt = db.Column(db.Text(), nullable=False)
source = db.Column(Enum(ReceiptSource), nullable=False)
expiry_date = db.Column(db.TIMESTAMP(), nullable=False)
account_id = db.Column(db.Integer, db.ForeignKey(Account.id), unique=True)
account = db.relationship('Account', back_populates="receipt")
Run Code Online (Sandbox Code Playgroud)
SQLALchemy中似乎没有LongText(),所以我像这样进行了迁移:
def upgrade():
connection = op.get_bind()
connection.execute("""
ALTER TABLE main_db.receipt MODIFY COLUMN receipt LONGTEXT NOT NULL;
""")
Run Code Online (Sandbox Code Playgroud)
这是抛出的错误:
sqlalchemy.exc.DataError: (MySQLdb._exceptions.DataError) (1406, "Data too long for column 'receipt' at row 1")
[SQL: INSERT INTO main_db.receipt (product_id, type, receipt, source, expiry_date, account_id) VALUES (%s, …Run Code Online (Sandbox Code Playgroud) 这可能听起来很奇怪,但是当我打开一个我不知道的解决方案时,如何确定类库是纯粹的CLR类库还是实际上是一个silverlight类库?
谢谢,Kave
我对Moq来说比较新,并且有这个复杂的案例可以模拟并且有点困难.我希望有经验的Moq用户可以就此提出建议:
在我的ViewModel中,ctor正在调用这个load方法:
public void LoadCategories()
{
Categories = null;
BookDataService.GetCategories(GetCategoriesCallback);
}
Run Code Online (Sandbox Code Playgroud)
我想明显嘲笑服务.但是由于服务的方法是无效的,并且返回总是通过回调,因此对我来说太复杂了.
private void GetCategoriesCallback(ObservableCollection<Category> categories)
{
if (categories != null)
{
this.Categories = categories;
if (Categories.Count > 0)
{
SelectedCategory = Categories[0];
}
LoadBooksByCategory();
}
}
Run Code Online (Sandbox Code Playgroud)
因为这还不够糟糕,正如你所看到的,在调用LoadBooksByCategory()中有另一个LoadMethod
public void LoadBooksByCategory()
{
Books = null;
if (SelectedCategory != null)
BookDataService.GetBooksByCategory(GetBooksCallback, SelectedCategory.CategoryID, _pageSize);
}
private void GetBooksCallback(ObservableCollection<Book> books)
{
if (books != null)
{
if (Books == null)
{
Books = books;
}
else
{
foreach (var book in books)
{ …Run Code Online (Sandbox Code Playgroud) 我已经在.NET 4.0中找到了如何做到这一点,但我认为Silverlight中不存在JpegBitmapEncoder:
MemoryStream memStream = new MemoryStream();
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(imageC));
encoder.Save(memStream);
var bytes = memStream.GetBuffer();
Run Code Online (Sandbox Code Playgroud)
如何在silverlight中将图像转换为bytes []?
更新:
我有一个Contact模型,它有一个Photo属性.每当我添加一个新的联系人时,我想加载一个本地默认图像并将其转换并将Photo属性设置为它.
var bitmapImage = new BitmapImage
{
UriSource = new Uri("pack://application:,,,/xxx;component/Images/default.JPG")
};
var image = new Image{Source = bitmapImage};
Run Code Online (Sandbox Code Playgroud)
这是首先加载图像的正确方法吗?
.net ×4
unit-testing ×4
python ×3
django ×2
silverlight ×2
c# ×1
datatrigger ×1
factory-boy ×1
flask ×1
image ×1
jinja2 ×1
mocking ×1
moq ×1
mvvm ×1
mysql ×1
python-mock ×1
sqlalchemy ×1
wpf ×1