【发布时间】:2020-03-30 14:27:51
【问题描述】:
您好,感谢您抽出宝贵时间 我正在使用 Django,但我遇到了以下问题:
- /dashboard/ 处的 NoReverseMatch。
- /event/ 处的 NoReverseMatch。
当我尝试转到仪表板页面或 event_list 页面时,我收到错误消息。 我知道这取决于放置在使用 EventoDetailView 和 url name=dettagli 的模板文件中的 url 链接,但我不明白原因。 我试图弄清楚,但我无法做到这一点。 这是代码:
模型.py
class Evento(models.Model):
nome = models.CharField(max_length=200, default='', blank=True, null=True)
descrizione = models.TextField(max_length=5000, default='', blank=True, null=True)
slug = models.SlugField()
objects = models.Manager()
cover = models.ImageField(upload_to='media/', default='', blank=True, null=True)
data = models.DateTimeField(auto_now=False, auto_now_add=False, blank=True, null=True)
author = models.ForeignKey("auth.User", on_delete=models.CASCADE, verbose_name="Balneatore", null=True)
stabilimento = models.ForeignKey(Stabilimento, blank=True, null=True)
saved = models.ManyToManyField(User, related_name='saved', blank=True)
def __unicode__(self):
return self.nome
def total_saved(self):
return self.saved.count()
def get_absolute_url(self):
return reverse("eventi:dettagli", args=[self.id])
class Meta:
verbose_name = "Evento"
verbose_name_plural = "Eventi"
@receiver(pre_save, sender=Evento)
def pre_save_slug(sender, **kwargs):
print (kwargs)
slug = slugify(kwargs['instance'].nome)
kwargs['instance'].slug = slug
查看.py
def EventiListView(request):
evento_list = Evento.objects.all()
evento_filter = EventoFilter(request.GET, queryset=evento_list)
context = {
'evento_list': evento_list,
}
return render(request, 'evento_filter_list.html', {'filter': evento_filter}, context)
def EventoDetailView(request, id):
evento = get_object_or_404(Evento, id=id)
#eventi_salvati = Evento.objects.filter(saved=saved)
is_saved = False
if evento.saved.filter(id=request.user.id).exists():
is_saved = True
context = {
'evento': evento,
'is_saved': is_saved,
'total_saved': evento.total_saved(),
#'eventi_salvati': eventi_salvati,
}
return render(request, 'evento.html', context)
#dashboard balneatore = Eventi Balneatore
def EventiPubblicati(request):
eventi = Evento.objects.filter(author=request.user)
context = {
"eventi": eventi,
}
return render(request, "eventi_pubblicati.html", context)
网址.py
urlpatterns = [
url(r'^$', views.EventiListView, name='search'),
url(r'(?P<id>\d)/$', views.EventoDetailView, name='dettagli'),
url(r'(?P<id>\d+)/eventi-salvati/$', views.EventiSalvatiView, name="salvati"),
]
detail.html
<a class="text-white" href="{{ evento.get_absolute_url }}">
dashboard.html
<td><a href="{{ evento.get_absolute_url }}">{{evento.nome}}</a></td>
<td><a href="{% url 'update' evento.id %}" class = "btn btn-danger">Modifica</a></td>
【问题讨论】:
-
您需要显示完整的错误消息和回溯。究竟是哪个 URL 没有找到,使用了哪些参数?在仪表板中,
evento是什么?你有eventi的for循环吗?显示它。 -
您是否在
urls.py中定义了app_name=eventi? -
是的,我定义了应用名称
-
是的,我有一个 for 循环。在 EventiPubblicati 视图(定义我的仪表板)中,我进行了查询以按用户过滤事件。因此,在仪表板模板中,我应该通过 for 循环获取所有用户的事件。