我想将字符串作为参数发送到Django中urls.py中的URL之一。该网址是 path('competitions // about',views.comp_about,name ='comp_about'),
我通过HTML文件将字符串发送为
<a href="% url 'comp_about' {{c.comp_name}}%">Register Now!</a>
其中c是我的对象,其数据成员为comp_name
这是点击后的最终网址 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
答案 0 :(得分:1)
我认为您需要类似以下内容的东西。您可以阅读有关该语法的更多信息以及可以做什么in the django docs。请注意,在OP中,您缺少django模板过滤器周围所需的左括号{
和}
。确保包括它们。
<a href="{% url 'comp_about' comp_name=c.comp_name%}">Register Now!</a>