2017-07-15 28 views
0

請原諒我這個題目不佳的標題,因爲我還在學習Python。 問題是,在我的Python腳本中,我想將.hot替換爲一個名爲實例的變量,該變量從我的HTML文件中選擇了一些選項。不幸的是,由於某種原因,我還不明白,我不能用'實例'或str(instance())來代替'hot'。如果有人能幫助我一個很好的解決方案!Python如何用HTML列表分配一個變量名到(方法?)

謝謝

這裏是Python腳本問題

@app.route('/', methods=['POST']) 
def index_post(): 
    subreddit = request.form['subreddit'] 
    instance = request.form['instance'] 
    num = request.form['limit'] 
    news = [] 
    i = 0 
    for submission in reddit.subreddit(subreddit).hot(limit=int(num)): 
     i += 1 
     news.append(str(i) + '. ' + submission.title) 
    return render_template("index.html", news=news) 

這是我的HTML模板。

<!doctype html> 

<form action="." method="POST"> 
    Subreddit name: 
    <input type="text" name="subreddit" placeholder="Topic"> 

    Instance: 
    <select name="instance"> 
     <option value="controversial">Controversial</option> 
     <option value="gilded">Gilded</option> 
     <option value="hot">Hot</option> 
     <option value="new">New</option> 
     <option value="rising">Rising</option> 
     <option value="top">Top</option> 
    </select> 

    Limit: 
    <input type="number" name="limit"> 
    <input type="submit" value="Search"> 
</form> 

{% for item in news %} 
    <p> {{item}} </p> 
{% endfor %} 

回答

0

如果我理解你的問題吧,你想要做這樣的事情:

redditFunction = getattr(reddit.subreddit(subreddit), instance) 
for submission in redditFunction(limit=int(num)): 
    ... 

instancenew這個應該叫

reddit.subreddit(版(Subreddit))。新的(限= int(num))

gettattr獲取傳遞給它的第一個參數的屬性,該參數用第二個屬性命名。因此,您將獲得instance變量中指定的函數,該函數(希望)是您嘗試調用的函數。

+0

謝謝先生,它的工作原理與我預期的一樣! – FsimulatorX

相關問題