django用加号替换url中的whispace

时间:2018-03-01 10:26:01

标签: django python-2.7

我的模型中有名称由空格分隔。示例: Don Joe ,它的k..i希望如此,但在网址中显示的内容如此 https://example.com/details/Don Joe 我想要用加号 + 替换该空格。

这是 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 %}

谢谢

1 个答案:

答案 0 :(得分:1)

您可能应该为模型添加单独的字段,例如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实用程序将替换所有空格),您可以使用自定义逻辑来更新值