gpt4 book ai didi

Django:TemplateSyntaxError,过滤器无效

转载 作者:行者123 更新时间:2023-12-05 01:33:00 25 4
gpt4 key购买 nike

我正在尝试使用变量访问字典中的值,所有这些都在遵循 Django 模板语言的 HTML 文件中。 Django 的模板语言不允许您使用变量作为键来访问字典,因此我决定使用 Django 过滤器来执行此操作。但是,我收到“无效过滤器”错误,我不知道为什么。

我的 html 文件

<table class="table">
<tbody>
<tr>
<th scope="row">Username</th>
<th scope="row">Full Name</th>
<th scope="row">Points</th>
{% for subject in subjects %}
<th scope="row">{{ subject }}</th>
{% endfor %}
</tr>
{% for user in users %}
<tr>
<td>
<a href="{% url 'profile' username=user.username %}">{{ user.username }}</a>
</td>
<td>{{ user.first_name }} {{ user.last_name }}</td>
<td>{{ user.profile.points.total }}</td>
{% for subject in subjects %}
<td>{{ user.profile.points|keyvalue:subject }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>

我的过滤器.py
from django import template
register = template.Library()

@register.filter
def keyvalue(dict, key):
return dict[key]

我的错误信息
TemplateSyntaxError at /leaderboard/
Invalid filter: 'keyvalue'

感谢您的任何帮助:D

编辑:按要求粘贴我的 views.py 和 urls.pu

View .py
def leaderboard(request):
global leaderboard_public
users = sorted(User.objects.all(), key=lambda t: t.profile.points['total'], reverse=True)

if request.method == "POST":
leaderboard_public = not leaderboard_public
return redirect(leaderboard)
subjects = list(Subject.objects.values('subject_name'))
subjects = [i['subject_name'] for i in subjects]
print(subjects)
return render(request, "leaderboard.html", {
"users": users,
"subjects": subjects,
# "leaderboard_public": leaderboard_public,
})

网址.py
from accounts import views as accountsViews
from puzzles import views as puzzlesViews

urlpatterns = [
url(r'^admin/', admin.site.urls),

url(r'^signup/$', accountsViews.signup_without_email, name="signup"),
url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
accountsViews.activate, name='activate'),
url(r'^logout/$', authViews.LogoutView.as_view(), name='logout'),
url(r'^login/$', authViews.LoginView.as_view(template_name='login.html'), name="login"),
# url(r'^puzzles/$', puzzlesViews.puzzles, name="puzzles"),
url(r'^puzzle/(?P<puzzleID>.+)/edit/$', puzzlesViews.editPuzzle, name="editPuzzle"),
url(r'^puzzle/(?P<puzzleID>.+)/$', puzzlesViews.puzzle, name="puzzle"),
url(r'^scheduled/$', puzzlesViews.scheduled, name="scheduled"),
url(r'^closed/$', puzzlesViews.closed, name="closed"),
url(r'^leaderboard/$', accountsViews.leaderboard, name="leaderboard"),
# url(r'^leaderboard/(?P<subject>.+)/$', accountsViews.leaderboard_subject, name="leaderboard"),
# url(r'^submissions/$', puzzlesViews.submissions, name="submissions"),
url(r'^profile/(?P<username>.+)/submissions$', puzzlesViews.submissions, name="submissions"),
url(r'^profile/(?P<username>.+)/edit/$', accountsViews.editProfile, name="editProfile"),
url(r'^profile/(?P<username>.+)/$', accountsViews.profile, name="profile"),
url(r'^create/$', puzzlesViews.create, name="create"),
# url(r'^$', views.home, name="home"),
url(r'^$', puzzlesViews.puzzles, name="puzzles"),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

让我知道是否需要任何其他信息。

最佳答案

我试过 {% load crippy_forms_filters %} 并且它对我有用!

关于Django:TemplateSyntaxError,过滤器无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48842889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com