2

異なる URL に使用される同じテンプレートがあります (この場合は/create//edit/[PK of an item]url.py で「作成」および「編集」という名前の と )。

/edit/ または /create/ のどちらを使用しているかに応じて、テンプレートにさまざまなものを表示したいと考えています。

どうすればこれを確認できますか? {% if '/create' in request.path %}動作しますが、urlタグを使用したいと思います(または同等のものを「ハードコーディング」しないようにします)。私がやりたいことは (疑似コードで - これは機能しません) のようになり{% if request.path in url create %} XXX {% endif %}ます。

views.py で必要なすべてのテストを行い、それに関する変数をコンテキストで送信し、テンプレートでこの変数をテストする必要がありますか? 私の場合、単純なURLテストには少し重いようです...

4

3 に答える 3

3

as値で URL を設定できます。

{% url 'some-url-name' arg arg2 as the_url %}

{% if the_url in request.path %}
于 2012-07-27T10:40:26.787 に答える
2

重要な違い (異なるフォームなど) である場合は、2 つのビューを作成することをお勧めします - テンプレートの URL ロジックを完全に排除し、実際の「テスト」も必要ありません - request.path/pass url をチェックする必要はありません/等。

URL

urlpatterns = patterns('',
    (r'^create/$', create),
    (r'^edit$', edit),
)

ビュー

def create(request):
    text = "Create something"
    return render_to_response('same-template.html', {'text': text}, context_instance=RequestContext(request)

def edit(request):
    text = "Edit something"
    return render_to_response('same-template.html', {'text': text}, context_instance=RequestContext(request)

テンプレート

{% text %}

この方法でも、リストを使用して複数の変更を簡単に渡すことができます。

ビュー

def create(request):
    data = []
    data['text'] = "Create something"
    data['form'] = CreateForm()
    return render_to_response('same-template.html', {'data': data}, context_instance=RequestContext(request)

def edit(request):
    data = []
    data['text'] = "Edit something"
    data['form'] = EditForm()
    return render_to_response('same-template.html', {'data': data}, context_instance=RequestContext(request)

テンプレート

{% data.text %}
{% data.form %}
于 2012-07-27T10:37:39.083 に答える
0

ビューで行うか、テンプレート タグを記述します。

ジャンゴのスニペットを見ると、これは良さそうです: http://djangosnippets.org/snippets/1531/

于 2012-07-27T10:33:38.530 に答える