标题可能不太清楚,但我不知道怎么说呢......
在Django文档中,很清楚如何标记要翻译的文本块.举个例子:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec quam sem, sodales in fringilla nec, lacinia a lorem.
Vivamus vel molestie ante.
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.您只需要使用trans或blocktrans标记.
但现在考虑一下:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec quam sem, sodales in fringilla nec, lacinia a lorem.
<a href="{% url some-view %}">Vivamus vel</a> molestie ante.
Run Code Online (Sandbox Code Playgroud)
我应该怎么处理这个?我只是将它包裹在块trans中吗?
编辑:
我想我已经发现应该怎么做了..
{% url some-view as some_view_url %}
{% blocktrans %}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec quam sem, sodales in fringilla nec, lacinia …Run Code Online (Sandbox Code Playgroud) 我使用HTML5的地理定位API,并且位置对象具有"准确度"属性,该属性可能会根据定位的准确性而变化.
到现在为止还挺好.但价值是一个未指明的单位..有时它是60,或1250甚至18000.
我已经阅读了W3C地理位置API规范[1],他们谈论了这个属性,但从未提及应该如何解释它.
我找到一个可能的答案的唯一地方是国防部世界Geodic系统[2]技术报告.他们提到以cm为单位的精度,1σ(标准偏差).
但这并没有告诉我HTML5地理定位API给我带来的准确性单位是什么.我只能假设它是以厘米为单位.
[1] http://dev.w3.org/geo/api/spec-source.html
[2] http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf
考虑以下:
class OrderForm(models.Model):
title = models.CharField(max_length=100)
desc = models.TextField()
class OrderFormLine(models.Model):
order = models.ForeignKey(OrderForm)
lagel = models.CharField(max_length=100)
qty = models.IntegerField(...)
price = models.FloatField(...)
Run Code Online (Sandbox Code Playgroud)
现在,我想发送一封包含订单表格详细信息的电子邮件,无论何时有人创建或修改一个.
到目前为止还没有火箭科学..让我们只使用post_save信号;
post_save.connect(email_notify, sender=OrderForm)
Run Code Online (Sandbox Code Playgroud)
但是有一个小问题,传递给email_notify的OrderForm对象会按预期更新新数据,但不会更新相关的OrderFormLine项.
我试图覆盖管理员和模型中的保存方法,我试图保存对象,表单及其关系,然后将其传递给我的通知处理程序,没有任何作用.
我知道我可以将post_save信号附加到OrderItem模型,但随后会为每个项目发送电子邮件.
帮助我处于疯狂的边缘.
更新:
短篇故事:
def email_notify_orderform(sender, **kwargs):
instance = kwargs['instance']
ct = ContentType.objects.get_for_model(OrderForm)
if ct.id == instance.content_type.id:
print instance.is_addition()
print instance.is_change()
print instance.is_deletion()
print instance.change_message
print instance.action_time
print instance.get_edited_object().total() # BINGO !
post_save.connect(email_notify_orderform, sender=LogEntry)
Run Code Online (Sandbox Code Playgroud) django django-signals django-models django-forms django-admin
我一直在使用buildout很长一段时间没有任何问题,事实上我昨天没有任何问题.
但是今天我的所有项目都无法扩建.我尝试了两个不同的Ubuntu工作站,结果相同.
这是我得到的错误:
Initializing zc.buildout
Debug: Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
Traceback (most recent call last):
File "bootstrap.py", line 259, in <module>
import zc.buildout.buildout
File "/tmp/tmpNkVMXW/zc.buildout-2.0.0-py2.7.egg/zc/buildout/buildout.py", line 18, in <module>
import zc.buildout.easy_install
File "/tmp/tmpNkVMXW/zc.buildout-2.0.0-py2.7.egg/zc/buildout/easy_install.py", line 59, in <module>
pkg_resources.Requirement.parse('distribute')
AttributeError: 'NoneType' object has no attribute 'location'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 66, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
ImportError: No module named apport.fileutils
Original exception was:
Traceback (most recent call last):
File "bootstrap.py", line 259, in …Run Code Online (Sandbox Code Playgroud) 我在模型中使用选择字段,当我使用{{object.get_FIELD_display}}在模板中显示它时,它总是以相同的语言显示..即使它在po文件中被翻译.
这是我的代码的简化版本:
PRODUCT_WEIGHT_UNIT = (
('to', _('ton')),
('li', _('pound')),
('vg', _(u'vgs³')),
)
class ProduitVrac(models.Model):
title = models.CharField(_("Title"), max_length=50)
unit = models.CharField(max_length=2, choices=PRODUCT_WEIGHT_UNIT)
Run Code Online (Sandbox Code Playgroud)
<ul>
{% for object in object_list %}
<li>
<h2>{{ object.title }}</h2>
{# The following will not be translated .. #}
{{ object.get_unit_display }}
</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我对python测试相当绿色,所以这可能是我做错了.
当我运行我的测试时,测试运行器工作正常并且覆盖范围也很好..但是在两者之间我得到一个断言错误:
Traceback (most recent call last):
File "/usr/local/bin/coverage", line 9, in <module>
load_entry_point('coverage==3.5.1', 'console_scripts', 'coverage')()
File "/usr/local/lib/python2.7/dist-packages/coverage/cmdline.py", line 657, in main
status = CoverageScript().command_line(argv)
File "/usr/local/lib/python2.7/dist-packages/coverage/cmdline.py", line 526, in command_line
self.coverage.stop()
File "/usr/local/lib/python2.7/dist-packages/coverage/control.py", line 389, in stop
self.collector.stop()
File "/usr/local/lib/python2.7/dist-packages/coverage/collector.py", line 262, in stop
assert self._collectors[-1] is self
AssertionError
Run Code Online (Sandbox Code Playgroud)
为了使事情变得更加困难,我正在尝试测试命令行实用程序.这意味着我必须告诉覆盖范围以涵盖子进程调用.
我认为我已经完成了这部分工作,因为报道现在正在报告正在运行的脚本的覆盖百分比.但是自从我完成覆盖工作后,我无法摆脱AssertionError.
有些人帮助理解真正意义上的错误.我的所有代码都可以在github上找到:
快速运行:
cd /tmp/ && git clone git://github.com/h3/django-duke-client.git
cd django-duke-client && chmod a+x run_tests && ./run_tests
Run Code Online (Sandbox Code Playgroud)
谢谢
更新
我在另一台计算机上运行测试,我得到了相同的AssertionError ..加上一个新的TypeError.测试再次正确运行,即使出现这些错误,覆盖范围似乎也能正常运行.
...
Ran 9 tests …Run Code Online (Sandbox Code Playgroud) 我有两个不同的Django项目,它们可以并行运行并完成不同的事情.
但是他们需要共享一个公共数据库表,即Client表.
这两个项目都包含多个需要包含映射到该客户端模型的外键的应用程序.
我不确定什么是最好的方法..
我有一个Django网站,其中发生了一个奇怪的错误.
在网站上,他们可以添加"出版物",这与不同名称的博客文章基本相同.
当他们修改现有帖子时,事情变得奇怪.他们首先在管理员中修改它,当他们进入网站时,更改不可见.就像旧版本被缓存一样.
事实上,在开始时我很确定它是一个浏览器缓存错误.但经过一些试验,事情变得有些怪异了.
我发现清除浏览器缓存或使用不同的浏览器并不能解决问题,但有趣的是它在刷新时在旧版本和修改版本之间切换.
所以,如果帖子的主体是"Hello World",我将其修改为"Goodbye cruel world"然后去网站多次刷新页面,我会看到"Hello World",然后是"Goodbye cruel world" ,然后是"Hello World"等等......无论我继续做多久.
但它并不止于此......大约24小时后,一切都恢复原状并正常工作.没有排列,网站坚持新版本......
我几乎说不出话来,因为我使用相同的服务器构建了超过50个其他Django站点,我以前从未遇到过这个问题.
我正在使用带有MySQL DB的最新django(1.3)并且未启用缓存..
有任何想法吗 ?
编辑:Apache的优雅重启解决了问题..但每次更新后重启apache并不是最好的事情..
更新:我刚刚重新设置了我的开发环境,我发现开发服务器的bug更加严重.无论我多久刷新或清除缓存,修改后的竞争都不会出现,直到我杀死/重新启动开发服务器.
我刚刚把一个在sqlite3上开发的网站放在网上,但是在部署时我需要切换到MySQL.
一切顺利,除了产品价格,因为在sqlite和MySQL DecimalField显然表现不一样.
考虑以下模型:
class ProductBase(models.Model):
title = models.CharField('Title', max_length=250)
price = models.DecimalField('Price', max_digits=9, decimal_places=2, default=0)
Run Code Online (Sandbox Code Playgroud)
在开发中,sqlite将允许价格为"0"或"100".
但是当转移到MySQL时,后端也会允许"0"或"100"输入,但是当保存对象实例时,它会自动转换为"0.00"或"100.00".
我知道ORM是一个抽象级别,它由于数据库后端功能之间的差异而有其限制.这就是为什么我在这里询问它是否是一个限制相关的错误或真正的错误..在打开新票之前..
我有一个Django的缓慢问题,我找不到源...我不确定我做错了什么,但至少两次在工作项目Django变得非常慢.
请求需要很长时间才能完成(~15秒),启动开发服务器时的验证模型也非常慢(四核上12秒以上......)
我已尝试在网上找到类似问题的许多解决方案,但它们似乎与我无关.
问题似乎不是来自Django的开发服务器,因为使用apache和mod_python的生产服务器上的请求也非常慢.
然后我认为这可能是一个DNS问题,但该网站在与Apache2一起提供时会立即加载.
我试图使用开发服务器,但我没有发现任何有趣的东西.
甚至评论所有应用程序(django应用程序除外)都没有改变任何东西..模型仍然需要年龄来验证.
我真的不知道我现在应该在哪里看..
有人有想法吗?
我有一个Web项目,我需要在请求特定URL时运行命令,但该命令需要root权限.
该项目由Python进程(Django)提供,当然以root权限运行它不是一个选项.
命令的参数是硬编码的,因此无法注入任何内容,而且它是一个受到保护的应用程序,因此我可以稍微更加自由,因为有权访问它的用户将是值得信赖的(希望如此).但理想情况下我想安全地做到这一点.
.
django ×7
python ×3
buildout ×1
coverage.py ×1
django-admin ×1
django-forms ×1
geo ×1
geolocation ×1
html5 ×1
http ×1
linux ×1
nose ×1
shell ×1
unit-testing ×1
web-services ×1