【发布时间】:2021-07-07 11:54:07
【问题描述】:
不知道为什么我会收到这个错误,我检查了我的视图和路径,我认为这看起来不错,我得到的 noreversematch 错误显示参数('wonderful','bass',1)'是正确的,但它会抛出此错误:
NoReverseMatch 在 /instrument-detail/wonderful/1/
未找到带有参数 '('wonderful', 'bass', 1)' 的 'create_eq' 的反向操作。尝试了 1 种模式:['create\-eq/(?P
这是我的视图、url、模型和模板,其中我有指向“create_eq”的链接:
urls.py
path('create-eq/<slug:track_slug>/<slug:instrument_slug>/int:id>/', views.create_eq, name='create_eq'),
path('instrument-detail/<slug:track_slug>/<int:id>/', views.instrument_detail, name='instrument_detail'),
views.py
@login_required
def create_eq(request, track_slug, instrument_slug, id):
user = request.user
track = get_object_or_404(Track, id=id)
instrument = get_object_or_404(Instrument, id=id)
if request.method == "POST":
form = EQCreateForm(request.POST)
if form.is_valid():
data = form.save(commit=False)
data.user = user
data.save()
return redirect('profile', slug=track.slug, id=track.id)
else:
form = EQCreateForm()
return render(request, 'feed/create_eq.html', {'form': form })
@login_required
def instrument_detail(request, track_slug, id):
user = request.user
track = get_object_or_404(Track, id=id)
my_inst = Instrument.objects.filter(track_id=track.id)
instrument_obj = get_object_or_404(Instrument, id=id)
if my_inst.exists():
instruments = Instrument.objects.filter(track_id=track.id)
context = {
'instruments': instruments,
'track': track,
'instrument': instrument_obj,
}
return render(request, 'feed/instrument_detail.html', context)
else:
print('There are no instruments set in your track')
return redirect('create_instrument', track_slug=track.slug, id=track.id)
models.py
class Instrument(models.Model):
title = models.CharField(max_length=120)
timestamp = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
track = models.ForeignKey('Track', on_delete=models.CASCADE, null=True)
artist = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
slug = models.SlugField(null=True, unique=True)
def __str__(self):
return 'title:{} track:{} artist:{}'.format(self.title, self.track, self.artist)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
return super(Instrument, self).save(*args, **kwargs)
class EQ(models.Model):
frequency = models.DecimalField(decimal_places=3, max_digits=20)
description = models.TextField(max_length=250, null=True, blank=True)
boost = models.DecimalField(decimal_places=2, max_digits=10, default=0)
cut = models.DecimalField(decimal_places=2, max_digits=10, default=0)
updated = models.DateTimeField(auto_now=True)
instrument = models.ForeignKey(Instrument,on_delete=models.CASCADE)
track = models.ForeignKey('Track', on_delete=models.CASCADE)
user_name = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return 'frequency:{} instrument:{} track:{} boost:{} cut:{} user_name:{} description:{}'.format(self.frequency, self.instrument, self.track, self.boost, self.cut, self.user_name, self.description)
class Track(models.Model):
title = models.CharField(max_length=100)
description = models.TextField(max_length=250, null=True, blank=True)
artist = models.CharField(max_length=250)
timestamp = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
slug = models.SlugField(null=True, unique=True)
instrument_detail.html
{% 用于仪器中的项目 %} <div class="col">
<div class="card one-track">
<a href="{% url 'create_eq' track.slug instrument.slug track.id %}"><h5>{{ items.title }}</h5></a>
</div>
</div>
{% endfor %}
【问题讨论】:
标签: django django-models django-views django-templates