Като стартиращ джанго, имам малък проблем да се справя:
<li><a href="{% url "dyn_display" category="first"%}">first</a></li>
<li><a href="{% url "dyn_display" category="second"%}">second</a></li>
<li><a href="{% url "dyn_display" category="third"%}">third</a></li>
urlconf.py
url(r"(?P<category>[a-z]+)$", "display", name="dyn_display")
view.py
def courses_display(request, category):
return render_to_response("display/basic.html", {category: "in"}, context_instance=RequestContext(request))
и накрая част от basic.html, така че можете да се замислите защо ми трябва тази променлива на категорията
basic.html
<div class="accordion" id="accordion2">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseFirst">
<strong>First</strong>
</a>
</div>
<div id="collapseFirst" class="accordion-body collapse {{ first }}">
<div class="accordion-inner">
...
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseSecond">
<strong>Second</strong>
</a>
</div>
<div id="collapseSecond" class="accordion-body collapse {{ second }}">
<div class="accordion-inner">
...
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThird">
<strong>Third</strong>
</a>
</div>
<div id="collapseThird" class="accordion-body collapse {{ third }}">
<div class="accordion-inner">
...
</div>
</div>
</div>
</div>
Тъй като цялата страница се прави с bootstrap и Jquery, последните части на URL
някои / URL /първи
някои / URL /втори
някои / URL /трета
са нещо грозно, тъй като акордеонният елементпозволява да се сгромоляса и да отворя съответните вътрешни тела, без да презареждам страницата. Така че въпросът е: има ли начин да се премине kwarg отзад, който ще се използва в изглед, а не за определяне на URL адреса обратно ()?
начина, по който получавам URL някои / URL / и продължавате да преминавате kwarg от първата .html страница към изгледа?
Отговори:
7 за отговор № 1Можете да използвате това:
Ако това беше вашият URL адрес:
url(r"(?P<category>[a-z]+)$", "display", name="dyn_display")
reverse("dyn_display", kwargs={"category": "first"})
За да пренасочите можете да го използвате така във вашия изглед:
from django.http import HttpResponseRedirect
return HttpResponseRedirect(reverse("dyn_display", kwargs={"category": "first"}))
Ако това беше вашият URL адрес:
url(r"$", "display", name="dyn_dysplay")
reverse("dyn_display")
За да пренасочите можете да го използвате така във вашия изглед:
from django.http import HttpResponseRedirect
return HttpResponseRedirect(reverse("dyn_display"))
За да имате изглед, който може да получи незадължителна стойност, ще ви трябват 2 URL адреса:
url(r"$", "display", name="dyn_optional_display")
url(r"(?P<category>[a-z]+)$", "display", name="dyn_display")
И тогава вашето мнение:
def courses_display(request, category=None):
ctx = {}
if category:
ctx.update({category: "in"})
return render_to_response("display/basic.html", ctx, context_instance=RequestContext(request))