我正在尝试创建一个 WtForms SelectField ,它将显示所有可供选择的各种编程语言。
几乎不可能在选择字段中键入所有编程语言listed here。如何实现这种选择字段。
代码
class SkillForm(Form):
skill = SelectField('Languages', choices=[('c++', 'C++'), ('python', 'Python'), ('text', 'Plain Text')])
submit = SubmitField('Submit')
def validate_skill(self, field):
if Skill.query.filter_by(author_id=current_user.id).filter(Skill.skill==field.data.lower()).first():
raise ValidationError('Skill already exists.')
我刚刚添加了三项技能,仅用于测试目的,它可以工作,我需要包含所有可能的语言,并且几乎不可能将它们全部写入选择中,所以我从中获得了其他选项。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您可以从运行脚本的网站获取所有语言:
#Get the html
import urllib2
response = urllib2.urlopen('http://en.wikipedia.org/wiki/List_of_programming_languages')
html = response.read()
#Parse it with beautifulsoup
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
langs = []
#Parse all the links.
for link in soup.find_all('a'):
#Last link after ZPL, the last language.
if link.get_text() == u'Top':
break
if link.get_text() == u'edit':
pass
else:
langs.append(link.get_text())
# find u'See also'
see_also_index_ = langs.index(u'See also')
# strip out headers
langs = langs[see_also_index_+1:]
print langs