迷人的游戏!
寻找一个如何在creep的内存中持久引用特定能源的示例.似乎存储实际的源对象将不起作用(?).
我想创建小部件,当关联字段有错误时,将特定类添加到元素标记.
我很难从小部件定义代码中查找有关如何检查字段是否存在与之关联的错误的信息.
目前我有以下存根窗口小部件代码(最终窗口小部件将使用更复杂的标记).
from django import forms
from django.utils.safestring import mark_safe
class CustomTextWidget(forms.Widget):
def render(self, name, value, attrs):
field_has_errors=False # change to dynamically reflect field errors, somehow
if field_has_errors:
error_class_string="error"
else:
error_class_string=""
return mark_safe(
"<input type=\"text\" class=\"%s\" value=\"%s\" id=\"id_%s\" name=\"%s\">" % (error_class_string, value, name, name)
)
Run Code Online (Sandbox Code Playgroud)
任何人都可以阐明在这里填充field_has_errors布尔的合理方法吗?(或者可能建议一种更好的方法来完成我正在尝试做的事情).提前致谢.
为了简单的调试目的,有没有办法获取screeps代码将字符串打印到控制台(或任何地方)?
在我的模型中,我经常使用旨在包含大量纺织品格式输入的文本字段.我想自动模糊输入这些文本字段的任何电子邮件地址,这样当它们在模板中打印时,它们对蜘蛛是不可见的.
有一种聪明的方法吗?
更新:
根据lazerscience的答案,这是我最终使用的代码.我将文件命名为encode_mailto.py,并将其放在templatetags目录中,放在我安装到大多数django项目中的"实用程序"类型应用程序中.
import re
import random
from django.utils.safestring import mark_safe
from django import template
register = template.Library()
email_link_pat = re.compile(r'<a\s+href=("|\')?mailto:[^>]+>[^<]*</a>')
email_pat = re.compile(r'\b[-.\w]+@[-.\w]+\.[a-z]{2,4}\b')
def get_script(m):
code_list = []
for c in m.group(0):
d = ord(c)
x = random.randint(0, d)
code_list.append("%d+%d" % (x, d-x))
return '<script type="text/javascript">document.write(String.fromCharCode(%s))</script>' % \
",".join(code_list)
def encode_mailto(text):
text = email_link_pat.sub(get_script, text)
text = email_pat.sub(get_script, text)
return mark_safe(text)
register.filter('encode_mailto', encode_mailto)</pre>
Run Code Online (Sandbox Code Playgroud)
然后在模板中使用它,如下所示:
{% load encode_mailto %}
{{"A bunch of text with an email address emailaddress@host.com"|encode_mailto }}
Run Code Online (Sandbox Code Playgroud) django ×2
javascript ×2
screeps ×2
automation ×1
django-forms ×1
email ×1
obfuscation ×1
textile ×1