首页 > 解决方案 > 如何将字符串参数发送到带有路径的url?

问题描述

我想将一个字符串作为参数发送到 Django 中 urls.py 中的一个 URL。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 来寻找我面临的问题。

视图.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>

网址.py

path('competitions/<comp_name>/about', views.comp_about, name='comp_about'),

模型.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 

标签: pythondjangostringurl

解决方案


我认为您想要如下所示的内容。你可以在 django 文档中阅读更多关于语法和你可以做什么的信息。请注意,在您的 OP 中,您缺少左括号和右括号{,并且}需要围绕 django 模板过滤器。确保包括它们。

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

推荐阅读