Flask : 요청 변수의 현재 페이지
템플릿에서 현재 어떤 페이지에 있는지 어떻게 알 수 있습니까? 나는 page
특히 일부 request.xxx
가 나에게 정보를 제공 할 수 있다는 것을 알고있을 때 와 같은 변수를 전달하지 않을 것 입니다.
<li {% if page=="home" %}class="active"{% endif %}>
<a href="/">Home</a>
</li>
<li {% if page=="about" %}class="active"{% endif %}>
<a href="/about">About</a>
</li>
만큼 당신이 가져온으로 request
, request.path
이 정보를 포함해야합니다.
애플리케이션의 flask에서 먼저 가져 오기 요청을합니다. 그런 다음 템플릿으로 전달하지 않고 사용할 수 있습니다.
<li {%- if request.path == "/home" %} class="active"{% endif %}>
<a href="/">Home</a>
</li>
<li {%- if request.path=="/about" %} class="active"{% endif %}>
<a href="/about">About</a>
</li>
URL 규칙을 변경하거나 사이트를 하위 폴더 아래에 배포하는 경우 경로를 업데이트해야하므로 request.path를 사용하는 것은 적절한 접근 방식이 아닌 것 같습니다.
대신 request.url_rule.endpoint를 사용하십시오. 여기에는 실제 경로와 관계없이 실제 엔드 포인트 이름이 포함됩니다.
(Pdb) request.url_rule.endpoint
'myblueprint.client_pipeline'
템플릿에서 :
<li {% if request.url_rule.endpoint == "myblueprint.client_pipeline" %}class="active"{% endif %}>Home</li>
행운을 빕니다!
하드 코딩 된 URL을 사용하지 않으려면 url_for
다음과 같은 기능을 사용할 수 있습니다 .
{% for ni in ['index', 'foo', 'bar', 'baz'] %}
<li {%- if request.path == url_for(ni) %} class="active"{% endif %}><a href="{{ url_for(ni) }}">{{ ni | capitalize }}</a></li>
{% endfor %}
이 경우 index, foo, bar 및 baz는 Python 코드에서 다음과 같이 사용되는 함수 이름입니다.
@app.route('/')
def index():
시험
<li {% if request.endpoint == "blueprintname.routename" %}class="active"{% endif %}>Home</li>
이것은 나를 위해 일했습니다.
URL에 더 많은 내용이있는 경우 .split 을 사용할 수도 있습니다 .
예:
/ product
/ product / add
/ product / 32432 / edit
/ product / 32432 / view
{{request.path.split ( '/') [1]}}
"제품"만 반환됩니다.
참고 URL : https://stackoverflow.com/questions/8676455/flask-current-page-in-request-variable
'IT박스' 카테고리의 다른 글
screen.availHeight와 window.height ()의 차이점 (0) | 2020.12.14 |
---|---|
UITextField 키보드를 비활성화 하시겠습니까? (0) | 2020.12.14 |
백 스택에서 조각 제거 (0) | 2020.12.14 |
ElasticSearch가 내 플러그인을 어디에 설치하는지 어떻게 알 수 있습니까? (0) | 2020.12.14 |
Django modelform은 필수 필드가 아닙니다. (0) | 2020.12.14 |