django用加号替换url中的whispace

问题描述 投票:0回答:1

我的模型中有名称由空格分隔。示例: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 %}

谢谢

django python-2.7
1个回答
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实用程序将替换所有空格),你可以使用自定义逻辑来更新值。

© www.soinside.com 2019 - 2024. All rights reserved.