2014-07-06 58 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