python - 如何在 Django 中找出 NoReverseMatch
问题描述
嗨,感谢您抽出宝贵时间我使用 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"),
]
详细信息.html
<a class="text-white" href="{{ evento.get_absolute_url }}">
仪表板.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>
解决方案
这是事件页面错误
NoReverseMatch at /eventi/
Reverse for 'dettagli' with arguments '(21,)' not found. 1 pattern(s) tried: [u'eventi/(?P<id>\\d)/$']
Request Method: GET
Request URL: http://127.0.0.1:8000/eventi/
Django Version: 1.11.21
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'dettagli' with arguments '(21,)' not found. 1 pattern(s) tried: [u'eventi/(?P<id>\\d)/$']
Exception Location: /Library/Python/2.7/site-packages/django/urls/resolvers.py in _reverse_with_prefix, line 497
Python Executable: /usr/bin/python
Python Version: 2.7.10
Python Path:
['/Users/vittorio/Desktop/app varie/app3 nuovo/stabilimare',
'/Library/Python/2.7/site-packages/pip-19.2.3-py2.7.egg',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/Library/Python/2.7/site-packages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC']
Server time: Gio, 5 Dic 2019 18:04:10 +0100
这是仪表板错误
NoReverseMatch at /dashboard/
Reverse for 'dettagli' with arguments '(21,)' not found. 1 pattern(s) tried: [u'eventi/(?P<id>\\d)/$']
Request Method: GET
Request URL: http://127.0.0.1:8000/dashboard/
Django Version: 1.11.21
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'dettagli' with arguments '(21,)' not found. 1 pattern(s) tried: [u'eventi/(?P<id>\\d)/$']
Exception Location: /Library/Python/2.7/site-packages/django/urls/resolvers.py in _reverse_with_prefix, line 497
Python Executable: /usr/bin/python
Python Version: 2.7.10
Python Path:
['/Users/vittorio/Desktop/app varie/app3 nuovo/stabilimare',
'/Library/Python/2.7/site-packages/pip-19.2.3-py2.7.egg',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/Library/Python/2.7/site-packages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC']
Server time: Gio, 5 Dic 2019 18:17:53 +0100
名为 dettagli 的 url 转到事件详细信息页面,如果我手动键入 url,页面将正常工作。不起作用的页面是具有详细信息页面链接的页面。
推荐阅读
- android - onAdFailedtoLoad: 3 错误仅适用于 AdMob 的 Android 版 Flutter 应用
- amazon-redshift - 在 Redshift 中重新创建表时访问被拒绝
- aws-sdk - 使用 micronaut-bom1.2.10、graal19.2.1 和 aws-sdk2.10.56 构建应用程序时出现错误:org.apache.commons.logging.LogFactoryjava.lang.NoClassDefFoundError
- amazon-web-services - 是否可以使用 .Net Core 2.2 在 AWS Lambda 上使用 Kinesis FireHose 执行 PutRecord?
- python - 更新 Google 表格而不覆盖现有的 google 表格
- reactjs - 渲染选项中的条件 [材质表]
- ansible - 如果启用了 ufw,如何运行 ansible 任务?
- python - 不使用小写或大写的不区分大小写的字符串比较
- jquery - 我如何捕捉菜单的第 8 个元素以在新选项卡中打开
- javascript - 如何小写对象中键的第一个字母?