【发布时间】:2021-08-21 14:58:23
【问题描述】:
我想将成就添加到我的网站。我希望它们不会被自动分配,但用户会添加他取得的成就。我无法看到它。
models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class Achievement(models.Model):
title = models.CharField(max_length=200, null=True)
grand = models.IntegerField(default=10, null=True)
body = models.TextField()
class UserAchievement(models.Model):
user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
user_achievement = models.ManyToManyField(Achievement, related_name='user_achievement')
achievement_get = models.DateTimeField(auto_now_add=True)
vievs.py
def achievement_view(request):
achievement_list = Achievement.objects.order_by()
return render(request, 'achievement/achievement.html', {
'achievement_list' : achievement_list,
})
def achievement_get(request, achievement_id):
achievement_list = get_object_or_404(Achievement, pk=achievement_id)
achi = get_object_or_404(Achievement, pk=achievement_id)
try:
selected_choice = achievement_list.score_set.get(pk=request.POST['choice'])
except (KeyError, Score.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'achievement/adetail.html', {
'achievement_list': achievement_list,
'error_message': "You didn't select a choice.",
'thanks' : "Good",
})
else:
a1 = get_object_or_404(Achievement, achievement_id)
a1.save()
a1.user_achievement.add(name=name)
return render(request, 'achievement/adetail.html', {
'achievement_list' : achievement_list,
})
urls.py
app_name = 'achievement' # przestrzeń nazw aplikacji
urlpatterns = [
# ex: /polls/
path('achievement', views.achievement_view, name='achievement'),
path('<int:achievement_id>/achievement', views.achievement_get, name='achievement_get'),
]
成就.html
{% for achievement in achievement_list %}
<li>{{ achievement.title }}</li>
<li><fieldset><a href="/{{achievement_id}}/achievement/"> {{ achievement.title }} {{ achievement.grand }}</a></fieldset></li>
{% endfor %}
当我点击链接时,
【问题讨论】:
-
href="{% url 'achievement_get' achievement_id %}"
-
来自站点的消息:NoReverseMatch 位于 /achievementachievement Reverse for 'achievement_get' 未找到。 'achievement_get' 不是有效的视图函数或模式名称。在其他地方,此链接有效:href="/{{achievement_id}}/achievement/"
标签: python django achievements