【发布时间】:2018-08-02 23:17:45
【问题描述】:
在我的启发应用程序(从投票教程开始,现在更大)中,我正在为文本答案实现自己的简单主题标签。该实现非常简单,实际上只是使用基于已标记单词的查询字符串的单词搜索过滤器。问题是文本字段中的许多有效字符在 URL 中是不可接受的,因此非专家用户制作的主题标签需要修改才能正常工作。人们想用连字符或 & & & & 来连接他们的单词,但这是行不通的。如果有些人是#brain-storming 而其他人是#brainstorming,也会很烦人。
创建一个从用户条目中去除查询字符串中断字符但不产生验证错误的伪验证器有哪些风险?我目前正在自己工作,但请将此视为其他人将在未来开发或分叉的产品。
如果我为此任务创建验证器,是否更适合作为 ModelForm 字段的一部分或在模型中“验证”和修改? (在这个应用中,一切都是 django 形式)。
这是否已经在核心 django 中某处? (我不打算加入 Django 主题标签应用程序来解决这个小问题,但我仍然需要学习很多 Django)
URL_BREAKER_TRANS = str.maketrans(dict((k, '') for k in [ '#', '!', '@', '$', '%', '^', '&', '*', '(', ')', '+', '=', ',', '.', '<', '>', '?', '/', '|', '~', '[', ']', '{', '}', '-', '_', '`']))
def validate_hashtag(string1):
"""this function takes a string input, checks for hashtags and
removes any url-breaking characters.
Although string.translate is very fast, splitting and then looping
word by word means this function will be demanding.
"""
string_list = string1.split(' ')
for i in range(len(string_list)):
if string_list[i].startswith("#"):
string_list[i] = "#" + string_list[i].translate(URL_BREAKER_TRANS)
else:
continue
return " ".join(string_list)
【问题讨论】:
标签: django django-forms django-validation