2014-07-06 55 views
-1

我正在尝试创建一个WtForms选择字段,它将显示所有可供选择的各种编程语言。选择字段中的所有编程语言的列表

几乎不可能在选择字段中输入所有编程语言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

下来选民请小心发表评论。 – ajkumar25

+2

显示你的代码 - 所以也许人们不会downvote。 – furas

+2

创建脚本以从Wikipedia获取所有编程语言并创建选择字段或任何您想要的内容。 – furas

回答

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 
+0

整洁。需要删除'编辑'。 –

+1

@kjtl:噢..该死。呃...哈哈。只需添加一条if语句,如果链接是编辑,则不要追加到langs。 – Dair

+0

@kjtl:更新,删除编辑...唯一的问题,还有什么我失踪哈哈。 – Dair