我有一个包含文本字段的Django模型.在管理GUI中,我希望能够仅过滤包含此字段中文本的记录.可能吗?
像这样的代码将过滤textfield的内容,但会显示过滤器中'All'和每个不同条目的过滤器.我想过滤'全部'或'包含某些东西'.
class MyModel(models.Model):
# ...
textfield = models.CharField(max_length=100)
# ...
class MyModelAdmin(admin.ModelAdmin):
list_display = ('...', 'textfield', '...')
list_filter = ('...', 'textfield', '...')
Run Code Online (Sandbox Code Playgroud) 我有一个Python函数,我正在对输入参数进行一些消毒:
def func(param1, param2, param3):
param1 = param1 or ''
param2 = param2 or ''
param3 = param3 or ''
Run Code Online (Sandbox Code Playgroud)
这适用于作为None而不是空字符串传递的参数.是否有更简单/更简洁的方法来循环函数参数以将这样的表达式应用于所有这些.我的实际功能有九个参数.
我在使用BeautifulSoup解析一些狡猾的HTML时遇到了麻烦.事实证明,较新版本中使用的HTMLParser不如先前使用的SGMLParser容忍.
BeautifulSoup有某种调试模式吗?我正在试图弄清楚如何阻止它从一个令人讨厌的HTML borking我从一个crabby网站加载:
<HTML>
<HEAD>
<TITLE>Title</TITLE>
<HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</HEAD>
<BODY>
...
...
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
BeautifulSoup在<HTTP-EQUIV...>标签后放弃
In [1]: print BeautifulSoup(c).prettify()
<html>
<head>
<title>
Title
</title>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
这个问题显然是HTTP-EQUIV标签,这实在是一个很畸形的<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">标签.显然,我需要将其指定为自动关闭,但无论我指定什么,我都无法修复它:
In [2]: print BeautifulSoup(c,selfClosingTags=['http-equiv',
'http-equiv="pragma"']).prettify()
<html>
<head>
<title>
Title
</title>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
是否有一个详细的调试模式,BeautifulSoup将告诉我它在做什么,所以我可以弄清楚它在这种情况下作为标签名称处理什么?
在Python中,是否有更好的方法将字符串参数化为正则表达式,而不是像这样手动执行:
test = 'flobalob'
names = ['a', 'b', 'c']
for name in names:
regexp = "%s" % (name)
print regexp, re.search(regexp, test)
Run Code Online (Sandbox Code Playgroud)
这个noddy示例尝试依次匹配每个名称.我知道有更好的方法可以做到这一点,但这只是一个简单的例子,纯粹是为了说明这一点.
答案似乎是否定的,没有真正的选择.在python中对正则表达式进行参数化的最佳方法如上所述,或者使用衍生函数str.format().我试着写一个通用的问题,而不是'修复ma codez,kthxbye'.对于那些仍然感兴趣的人,我已经充实了一个更贴近我需求的例子:
for diskfilename in os.listdir(''):
filenames = ['bob.txt', 'fred.txt', 'paul.txt']
for filename in filenames:
name, ext = filename.split('.')
regexp = "%s.*\.%s" % (name, ext)
m = re.search(regexp, diskfilename)
if m:
print diskfilename, regexp, re.search(regexp, diskfilename)
# ...
Run Code Online (Sandbox Code Playgroud)
我试图根据文件的文件名找出文件的"类型" <filename>_<date>.<extension>.在我的真实代码中,filenames数组是一个dict,包含一个匹配的函数.
我考虑过的其他方式:
在数组中有一个正则表达式.我已经有一个没有任何正则表达式魔法的文件名数组,所以我不喜欢这样做.我已经在我的代码中的其他地方完成了这个并且它是一团糟(尽管有必要).
仅匹配文件名的开头.这可行,但会打破文件的.bak副本等.在某些时候我可能想从文件名中提取日期,所以无论如何都需要使用正则表达式.
感谢响应建议正则表达式的替代方法,以实现相同的最终结果.我对现在和未来的正则表达式参数化更感兴趣.我从未遇到过fnmatch …
我在模板中输出一系列Django对象:
{% for obj in list %}
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
但是我只想输出前五个,然后将其余部分分开<DIV>..想法是,我可以隐藏下半部分直到需要.
我设想这样的东西,但需要限制迭代的元素:
{% for obj in list %}
...
{% endfor %}
<a href="" onclick="unhide()">Show hidden</a>
<div id="hidden">
{% for obj in list %}
...
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
是否可以单独在模板中执行此操作?它是表示逻辑,所以我宁愿不污染视图.
python ×3
django ×2
arguments ×1
function ×1
html ×1
parameters ×1
parsing ×1
regex ×1
sanitization ×1