Ich erstelle einen Klon von fiverr.com als ein Projekt.KeyError in Django
Es gibt eine Kopfzeile in meiner base.html mit Kategorietiteln, die, wenn ich klicke, nur die Gigs in der entsprechenden Kategorie zur Anzeige herausfiltern soll.
Was passiert ist, dass es immer nach Hause umgeleitet wird. Ich habe einige Tests gemacht und glaube, dass es wegen der KeyError
sein sollte, und keine Verbindung wird an die Funktion korrekt übergeben.
-Code unten:
views.py
def category(request, link):
categories = {
"Graphics & Design": "GD",
"Digital & Marketing": "DM",
"Video & Animation": "VA",
"Music & Audio": "MA",
"Programming & Tech": "PT"
}
try:
gigs = Gig.objects.filter(category=categories[link])
return render(request, 'home.html', {"gigs": gigs})
except KeyError:
return redirect('home')
models.py
class Gig(models.Model):
CATEGORY_CHOICES = (
("GD", "Graphics & Design"),
("DM", "Digital & Marketing"),
("VA", "Video & Animation"),
("MA", "Music & Audio"),
("PT", "Programming & Tech")
)
title = models.CharField(max_length=500)
category = models.CharField(max_length = 2, choices=CATEGORY_CHOICES)
description = models.CharField(max_length=1000)
price = models.IntegerField(default=6)
photo = models.FileField(upload_to='gigs')
status = models.BooleanField(default=True)
user = models.ForeignKey(User)
create_time = models.DateTimeField(default=timezone.now)
def get_absolute_url(self):
return reverse('my_gigs')
def __str__(self):
return self.title
base.html (wo die Links sind - versucht, einen anderen Weg, den gleichen Link für Graphicsbekommen 210 Design, aber Ergebnisse waren ähnlich)
<nav class="navbar navbar-light bg-faded">
<div class="container">
<ul class="nav navbar-nav">
<li class="nav-item active">
<a class="nav-link" href='category/graphics-design'>Graphics & Design <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'category' 'digital-marketing' %}">Digital Marketing</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'category' 'video-animation' %}">Video & Animation</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'category' 'music-audio' %}">Music & Audio</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'category' 'programming-tech' %}">Programming & Tech</a>
</li>
</ul>
</div>
</nav>
urls.py
url(r'^category/(?P<link>[\w|-]+)/$', views.category, name='category'),
Könnten Sie in Ihrem Skript drucken (Link) und überprüfen, ob Sie den Linkwert aus der Anfrage erhalten? – Kannaj
Hallo Kunkka, danke für deine Antwort. Ich habe sowohl {% print (link)%} als auch {{link}} in der .html Datei gemacht, aber es konnte nicht funktionieren. Nicht sicher, ob ich es sogar richtig drucke. Ich bin immer noch ziemlich neu für Python und Django im Allgemeinen, also finde ich es meistens alleine heraus, während ich Beispiele mache. Stack Overflow war jedoch sehr hilfreich. Ich danke dir sehr! –