我正在开发一个网站,让用户可以阅读以不同方式显示的书籍。例如,我有以下网址:
/read_in_white/book_name/chapter_number
- 显示白页 /read_in_pink/book_name/chapter_number
- 显示粉红色页面
我的观看功能是read_in_white(request, book_name, chapter_number)
和read_in_pink(request, book_name, chapter_number)
起初我只有read_in_white
,显示白页。它还在Bootstrap导航栏中有一些分页控件。这些都位于read_in_white.html
模板中,其中包含用于导航不同书籍或章节的控件。例如,我在模板中有以下内容:
<a href="{% url "app.views.read_in_white" book='Good Book' chapter=1 %}"/>
现在我要添加read_in_pink
视图和模板。 read_in_pink
的导航部分与read_in_white
中的导航部分几乎完全相同,但有一点不同:
<a href="{% url "app.views.read_in_pink" book='Good Book' chapter=1"/>
我想将所有导航移动到基本模板,但我无法弄清楚要放在(% url %}
标记中的内容。如何找到当前视图的名称?我知道我可以将其添加到上下文中,或者我可以将book
和chapter
更改为查询参数,因此URL为/read_in_pink?book=...&chapter=...
,但我希望有一些简单的事情{ {1}}。
有吗?
答案 0 :(得分:2)
不,没有,因为这会在视图和模板之间引入非常强 er 耦合,这通常是一个坏主意。
但这听起来像你想要参数化颜色,不是吗? 然后,您可以将颜色传递到导航或任何您想要的位置。
def read_in_color(request, color, book, chapter):
if color == "white":
return render_to_response("whitetemplate")
if color == "pink":
return render_to_response("pinktemplate")
然后在你的模板中
{% url "app.views.read_in_color" color="pink" book="Good Book" chapter=1 %}