2017-06-04 1 views
-2

私はこれを自分のhtmlファイルとして持っています。PythonとDjangoを使用して、最大値から最小値まで辞書内のすべての項目を一覧表示するにはどうすればよいですか?

<form method="post"> 
    {% csrf_token %} 
    Problem: <input type="text" name="poi" autofocus> 
    <input type="submit" value="Submit"> 
    <hr> 
</form> 
<br> 
<ul> 
    {% for u in sort %} 
     <li>{{ u|safe }}</li> 
    {% endfor %} 
<ul> 

と私は辞書dictionary = {'hi': 5, 'hey': 3, 'hiya': 1}の項目のすべてを取り、以下を使用して最低値に最高で、それらを並べ替えるソートと呼ばれる私の変数を持っています。

for w in sorted(dictionary, key=dictionary.get, reverse=True): 
    sort.append(w) 

このリストは、値の高い順に並べられています。あなたがhtmlファイルで見ることができるように、私はすべてを順番に印刷しようとしています。間違っているのは、何も印刷されていないということです。私は間違って何をしていますか?

編集:renderについては以下を参照してください。

try: 
    return HttpResponse(request, 'patrec.html', {'sort':sort}) 
except: 
    return render(request, 'patrec.html') 
+0

「ソート」にはあなたの期待するものが含まれていますか? (あなたのビューコードのロギングメッセージにその内容を表示しましたか?) 'sort'をテンプレート' render'呼び出しに渡していますか? –

+0

私は編集をしました。チャンスを得たときにそれをチェックしてください。 – NickTheInventor

+0

データはdbからフェッチされますか? yesの場合、django ORMを使用できます。これをチェックしてくださいhttps://docs.djangoproject.com/en/1.11/ref/models/querysets/#django.db.models.query.QuerySet.order_by – Kaushal

答えて

2

間違った方法でHttpResponseを使用しています。それはそれが動作する方法ではないので、例外をスローすることになっています。したがって、常に例外が発生し、exceptブロック内では、{'sort': sort}をコンテキストとして渡していないrenderの結果が返されます。したがって、ブロックtryexceptをブロックHttpResponseと一緒に削除してください。

return render(request, 'patrec.html', {'sort': sort}) 
+0

私は 'try ... except'を保ちました。 。あなたの答えをありがとう! – NickTheInventor

0

あなたは何ができる

import heapq 
list1=heapq.nlargest(len(dict1), dict1, key=dict1.get) 
print(list1) 

dict1が辞書の名前であるとのこと。

heapqはPython 3でビルドされているので、何もインストールする必要はありません。

関連する問題