小编Mat*_*Mat的帖子

Django管理GUI可以过滤文本字段是否为空白?

我有一个包含文本字段的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)

django

4
推荐指数
1
解决办法
1674
查看次数

循环功能参数用于完整性检查

我有一个Python函数,我正在对输入参数进行一些消毒:

def func(param1, param2, param3):
    param1 = param1 or ''
    param2 = param2 or ''
    param3 = param3 or ''
Run Code Online (Sandbox Code Playgroud)

这适用于作为None而不是空字符串传递的参数.是否有更简单/更简洁的方法来循环函数参数以将这样的表达式应用于所有这些.我的实际功能有九个参数.

python parameters arguments sanitization function

3
推荐指数
1
解决办法
1011
查看次数

BeautifulSoup 3.1解析器很容易打破

我在使用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将告诉我它在做什么,所以我可以弄清楚它在这种情况下作为标签名称处理什么?

html python parsing beautifulsoup

3
推荐指数
1
解决办法
2358
查看次数

Python中的参数化正则表达式

在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 …

python regex

3
推荐指数
1
解决办法
782
查看次数

Django for循环有多大的灵活性?

我在模板中输出一系列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)

是否可以单独在模板中执行此操作?它是表示逻辑,所以我宁愿不污染视图.

django django-templates

3
推荐指数
2
解决办法
2305
查看次数