Я хочу отправить строку в качестве параметра на один из моих URL в urls.py в Django. URL-адрес
путь ('соревнования // о', views.comp_about, name = 'comp_about'),
Я отправляю свою строку через мой HTML-файл как
<a href="% url 'comp_about' {{c.comp_name}}%">Register Now!</a>
где c - мой объект с элементом данных comp_name
это окончательный URL после нажатия
http://127.0.0.1:8000/competitions/%%20url%20'comp_about'%20Comp1%
Там написано, что страница не найдена!
Я искал в SO и Google проблему, с которой я столкнулся.
views.py
@login_required(login_url='login')
def comp_about(request,comp_name):
comps= Competition.objects.get(comp_name=comp_name)
context={
"comps": comps
}
return render(request,"competition/about.html",context)
HTML-файл
<h4>List of Comps</h4>
<br>
<div class="section">
{% if comps %}
<ul>
{% for c in comps%}
<li>
{{c.comp_name}} <br> <a href="% url 'comp_about' {{c.comp_name}}%">Register Now!</a>
</li>
<br><Br>
{% endfor %}
{% endif%}
</ul>
</div>
urls.py
path('competitions/<comp_name>/about', views.comp_about, name='comp_about'),
models.py
class Competition(models.Model):
comp_name = models.CharField(max_length=75)
comp_description = models.TextField(max_length=10000)
comp_team_size = models.IntegerField(null=True,blank=False)
comp_payment_fee = models.IntegerField(null=True,blank=True)
comp_rules = models.TextField(max_length=10000,blank=False)
comp_date = models.DateField(null=True,blank=False)
comp_registration_deadline = models.DateField(null=True,blank=False)
class Meta:
ordering = ['-id']
def __str__(self):
return self.comp_name