2017-09-20 3 views
0

に私はこのようになりますDjangoのURLのルートがあります: ""reを置き換える方法 "。" DjangoテンプレートURLタグ

app_name = 'courses' 
urlpatterns = [ 
    url(r'./(?P<courseid>[0-9]+)/$', views.viewcourse, name='view_course'), 
    url(r'./(?P<courseid>[0-9]+)/review/$', views.reviewcourse, name='review_course') 
] 

ザ・を正規表現は、通常、例えば、スラグに置き換えられますで:

courses/computer-science/3/

今、私がレビューページにユーザーを取るために、私の「ビューもちろん」テンプレート、すなわち内のリンクを必要とする:

courses/computer-science/3/review/

私は単に現在のURLにreviewを追加することによってこれを行うことができます:

{{ request.path }}review

しかし、私はむしろ

{% url 'courses:review_course' courseid=course.pk %}

はしかし、これが生成するテンプレートのURLのタグを使用して '正しい' 方法、それを行うだろう:

courses/30/review、もちろん失敗しています。

{%url%}タグを使用して正しいリンクを生成することはできますか?名前のキャプチャパラメータに?私は、コードを持っていないとして、私はあなたの何を推測している(あなたがkwargsからはcourse_typeへのアクセス権を持っているあなたのビューで今

url(r'(?P<course_type>[a-z_-]+)/(?P<courseid>[0-9]+)/$', views.viewcourse, name='view_course') 

、あなたは、あなたが望むものは何でも読み込むことができます:

+1

なぜあなたがそうしていない '' 'URL(R '(P [-Z _-] +)/(P [0-9] +)/ $ '、views.viewcourse、name =' view_course ') '' 'と' 'course_type'''をあなたのビューのargsに入れて良いものを取得しますか? – Bestasttung

答えて

0
あなたのurls.pyを変更

やっている:))。

そして、あなたのテンプレートで

:??

{% url 'courses:review_course' courseid=course.pk course_type=something%} 
+0

これは「ベストプラクティス」のやり方だとお考えですか? –

+0

これはまあまあです。 –

+0

ちょうど "。"の代わりに[a-z _-] +を使用する利点は何ですか? ?アイデアは、コースIDが正しい限り、どんな文字列でも動作するはずです。 –

関連する問題