2017-08-08 66 views
0

我正在嘗試爲我的DJANGO網站創建一些漂亮的固定鏈接。特別是對於一個產品頁面,我希望它出現在browswer產品/產品稱號Django REGEX - 如何在URL中替換%20?

,所以如果我有一個產品用的標題是「免費$ 20優惠券凡購買」

的永久鏈接會顯示爲產品/自由$ 20美元的優惠券與購

我的網址如下:

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

,但在瀏覽器的URL被顯示爲

親導航/免費%20 $ 20%20Salad%20Coupon%20With%20購買

我知道%20代表的空間,但有什麼我可以在正則表達式中用' - '字符替換%20嗎?

+1

瀏覽器URL與Django無關,只是基於你如何在地址欄中輸入內容。如果你想用Django來處理這個問題,那麼當用戶去那個網站時,你必須發出一個重定向到一個類似的URL,而不是空格。 –

+0

好吧,這不是URL模式中的正則表達式的工作。這只是確定哪些字符是*預期*。您需要首先在任何模板代碼生成指向該URL的鏈接時解決此問題。 –

+0

好吧 - 所以我想也許在視圖中,我有哪些生成模板,我需要去掉那裏的空間? –

回答

0

處理此問題的最佳方法是使用SlugField爲模型生成實際的slu slu。如果裏面有空間,它不是一個slu!!

你的模型:

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

如果你在管理面板中加入這些項目,你可以使用prepopulated_fields屬性ModelAdmin的生成蛞蝓作爲用戶類型:

class ProductAdmin(admin.ModelAdmin): 
    prepopulated_fields = {"slug": ("title",)} 

這將從用戶鍵入的title創建一個子彈。

注意:SlugField也可能會去掉$字符。