2017-08-08 4 views
0

私はDJANGOのサイトのためのすばらしいパーマリンクを作成しようとしています。具体的に製品ページのために、私はそれがブラウザ専用に表示する製品/製品-タイトルとしてDjango REGEX - %20をURLに置き換える方法は?

ので、私は「ご購入で無料$ 20クーポン」のタイトルで製品を持っている場合

パーマリンクは、製品として表示されるでしょう次のように/自由$ 20クーポンで購入

私のURLは次のとおりです。

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

が、ブラウザにURLを

プロとして表示されていますダクト/フリー%20 $ 20%20サラッド%20Coupon%20With%20Purchase

私は%20がスペースを表していることを知っていますが、正規表現で%20を ' - '

+1

ブラウザのURLはDjangoとは関係ありません。アドレスバーに入力した内容に基づいています。 Djangoでそれを処理したい場合、人々がそのサイトにスペースの代わりにダッシュを持つ同様のURLに行くたびに、リダイレクトを発行する必要があります。 –

+0

これはURLパターンの正規表現の仕事ではありません。それはただ予想される文字を決定するだけです。最初にそのURLへのリンクを生成しているテンプレートコードであれば、これを修正する必要があります。 –

+0

大丈夫です - 私はおそらく、私はテンプレートを生成するビューでは、私は多分そこにスペースを取り除く必要があると思いますか? –

答えて

0

これを処理する最善の方法は、SlugFieldを使用してモデルの実際のスラッグを生成することです。それにスペースがあれば、それはスラッグではありません!

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

そして、あなたは管理パネルでこれらの項目を追加している場合、あなたはModelAdminprepopulated_fields属性使用して、ユーザーの種類としてナメクジを生成することができます:

class ProductAdmin(admin.ModelAdmin): 
    prepopulated_fields = {"slug": ("title",)} 
をお使いのモデルに

これは、ユーザータイプとしてtitleからスラッグを作成します。

注:SlugFieldは、$文字も削除する可能性があります。

関連する問題