简体   繁体   English

如何在 Django 中找出 NoReverseMatch

[英]How to figure out NoReverseMatch at / in Django

Hi and thank you for your time Im using Django and i've got a following issues:嗨,感谢您抽出时间使用 Django,但我遇到了以下问题:

  • NoReverseMatch at /dashboard/. /dashboard/ 中的 NoReverseMatch。
  • NoReverseMatch at /event/. NoReverseMatch 在 /event/。

When i try to go to the dashboard page or to the event_list page i get the error.当我尝试转到仪表板页面或 event_list 页面时,出现错误。 I know that it depends to url's links put in the templates files that use EventoDetailView and url name=dettagli but i don't understand the reason why.我知道这取决于放置在使用 EventoDetailView 和 url name=dettagli 的模板文件中的 url 链接,但我不明白原因。 Im trying to figure it out but im not able to do this.我试图弄清楚,但我无法做到这一点。 This is the code:这是代码:

Model.py模型.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

View.py查看.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)

Urls.py网址.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详细信息.html

<a class="text-white" href="{{ evento.get_absolute_url }}">

dashboard.html仪表盘.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>

This is the eventi page error这是事件页面错误

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

This is the dashboard error这是仪表板错误

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

The url named dettagli go to the event detail page and if i type the url manually the page works.名为 dettagli 的 url 转到事件详细信息页面,如果我手动输入 url,该页面将正常工作。 The pages that don't work are the pages that have the link to the detail page.不起作用的页面是具有指向详细信息页面的链接的页面。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM