我的模型中有名称由空格分隔。示例:Don Joe和它的k..i希望它像这样,但在网址中它显示像这样https://example.com/details/Don乔我想用加号+替换那个空格。
这是我的urls.py的一部分
url(r'^(?P<ps_name>.+)$', views.details, name='details'),
这是我的main.html的一部分
{% for ps in users %}
<tr>
<td>
<a href="{% url 'main:details' ps_name=ps.ps_name %}">{{ ps.ps_name }}</a>
</td>
</tr>
{% endfor %}
这是我的views.py的一部分
def details(request, ps_name):
ps = Seotube.objects.filter(ps_name=ps_name)
name = str(ps_name)
return render(request, 'main/details.html', {'name': name,
'pornstars': ps})
我确实希望保持名称正常,只有在我想要有加号而不是空格的网址中的空格。因为我也在details.html中调用了该名称
{% if name %}
<h1> {{ name }}</h1>
{% endif %}
谢谢
您可能应该为模型添加单独的字段,例如slug
,然后可以用来建立网址。
我建议使用名为SlugField的Django内置模型字段,然后覆盖模型的save
方法,以便在更新该模型的实例时填充字段的值:
# models.py
from django.utils.text import slugify
class YourModel(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, blank=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(YourModel, self).save(*args, **kwargs)
如果你真的想使用+
而不是-
(这是slugify
实用程序将替换所有空格),你可以使用自定义逻辑来更新值。