python - 如何将字符串参数发送到带有路径的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
解决方案
我认为您想要如下所示的内容。你可以在 django 文档中阅读更多关于语法和你可以做什么的信息。请注意,在您的 OP 中,您缺少左括号和右括号{
,并且}
需要围绕 django 模板过滤器。确保包括它们。
<a href="{% url 'comp_about' comp_name=c.comp_name%}">Register Now!</a>
推荐阅读
- azure-service-fabric - 使用 Service Fabric url 调用本地 Service Fabric 无状态 API
- r - 关于总和值到特定条件的变化
- javascript - 如何检查多个输入是否具有相同类的相同值(jQuery)
- javascript - Bootstrap 导航栏折叠按钮不起作用
- javascript - 如何使 chart.js 更小?(html,chart.js)
- java - 无法写入 JSON:503 服务暂时不可用;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException
- php - PHP/MySQL 资源使用情况
- python - 在Python中增加矩阵的维数
- c# - 输入整数用户输入后继续程序c#
- android - 在 web 和 android 上开发调度应用程序的有效方法