Django REGEX - 如何替换URL中的%20?

时间:2017-08-08 16:47:54

标签: python django

我试图为我的DJANGO网站创建一些漂亮的永久链接。特别是对于产品页面,我希望它作为产品/产品标题出现在浏览器中

所以如果我的产品标题为"购买免费20美元优惠券"

固定链接将显示为产品/免费 - $ 20-coupon-with-purchase

我的网址如下:

url(r'^(?P<slug>.*)/$', product_by_detail, name='product_detail')

但在浏览器中,网址显示为

产品/免费%20 $ 20%20Salad%20Coupon%20With%20Purchase

我知道%20代表了空间,但是我可以在正则表达式中做些什么来替换%20和&#39; - &#39;字符?

1 个答案:

答案 0 :(得分:0)

处理此问题的最佳方法是使用SlugField为模型生成实际的slug。如果里面有空格,那就不是一个slu !!

在你的模特上:

class Product(models.Model):
    slug = models.SlugField()

如果您在管理面板中添加这些项目,则可以在用户使用prepopulated_fields的{​​{1}}属性键入时生成slu ::

ModelAdmin

这将在用户输入时从class ProductAdmin(admin.ModelAdmin): prepopulated_fields = {"slug": ("title",)} 创建一个slug。

注意:title也可能会删除SlugField字符。