我试图为我的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;字符?
答案 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
字符。