如何将字符串参数发送到带有路径的url?

时间:2019-01-26 05:06:54

标签: python django string url

我想将字符串作为参数发送到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 

1 个答案:

答案 0 :(得分:1)

我认为您需要类似以下内容的东西。您可以阅读有关该语法的更多信息以及可以做什么in the django docs。请注意,在OP中,您缺少django模板过滤器周围所需的左括号{}。确保包括它们。

<a href="{% url 'comp_about' comp_name=c.comp_name%}">Register Now!</a>