Django 응용 프로그램을 올바르게 구조화해야하는 방법을 이해하기 위해 다소 고심합니다. 특히 나는 그 견해들에 대해 머리를 쓰려고 고심한다. Django 응용 프로그램의 올바른 구조와 뷰 및 하위 뷰 처리
그래서 나는이 파일base.html
을 가지고 있고이 파일이 등 바닥 글, 네비게이션 바, 머리까지
좋지으로 전체 응용 프로그램의 공통 요소를 가지고 것이라는 점을 알고있다. 내 base.html
파일 내부에서 나는 태그해야합니다 : 응용 프로그램의 동적 콘텐츠를 처리
{% block content %}
{% endblock %}
합니다. 는 지금은 home.html
라는 정적 페이지를 생성하고 그 파일 안에 나는
{% extends 'base.html' %}
... Whatever I want
{% block content %}
을 넣어 그리고 지금 난 정말 어떻게 작동하는지 이해하는 데 어려움을 겪고 부분 온다.
dashboard
이라는 새 앱을 만듭니다.
dashboard.html
파일을 만들고
home.html
과 비슷하게베이스를 확장하지만 요소는
content block
안에 있습니다. 생성 된 응용 프로그램의
views.py
에서 나는 정의
@login_required(login_url="login/")
def dashboard(request):
return render(request, "dashboard.html")
과 dashboard.html
{% extends 'base.html' %}
{% block content %}
<div class="dashboard-page">
<div class="row equal-sides">
<div class="col-sm-2 trim-right">
{% include 'dashboard_navigation.html' %}
</div>
<div class="col-sm-10 trim-left">
<div class="dashboard-main card">
<h3>Welcome to your dashboard</h3>
</div>
</div>
</div>
</div>
{% endblock %}
행복한 일. 이제 왼쪽의 탐색 막대에서 선택한 항목에 따라 오른쪽의 주 컨테이너 만 다시로드하려고합니다. 어떻게해야합니까?
내 URL 파일에 새로운 URL을 추가하고 views.py
파일 내부의 해당보기를 추가하면 모든 것이 좋습니다.
def single_search(request):
tweets = get_tweets()
context = {'tweets': tweets}
return render(request, "search.html", context)
urls.py
url(r'^dashboard', views.dashboard, name='dashboard'),
url(r'^dashboard/search$', views.single_search, name='search'),
그러나, 내가 무엇을 얻을 것은 내가이 문제를 해결 가서 다음 코드를 사용하여 "적절한"내용을 표시하기 위해 관리하는 dashboard.html
같은 페이지입니다 :
{% extends 'base.html' %} {% block content %}
<div class="dashboard-page">
<div class="row equal-sides">
<div class="col-sm-2 trim-right">
{% include 'dashboard_navigation.html' %}
</div>
<div class="col-sm-10 trim-left">
<div class="dashboard-main card">
{% if 'search' in request.path %}
{% include 'search.html' %}
{% else %}
<h3>Welcome to your dashboard</h3>
{% endif %}
</div>
</div>
</div>
</div> {% endblock %}
하지만 올바른 방법이 아니라는 것을 알고 있습니다. 또한 나는 통과하고있는 컨텍스트가 include 'search.html'
태그 안에 있다는 사실로 인해 반환되지 않는다는 것을 알고 있습니다. 대시 보드 내에서 동일한 컨텍스트를 전달하면 search.html
과 dashboard.html
에서 모두 작동하지만 불행히도 나는 사용자가 search.html
서브 페이지에있는 경우에만 해당 컨텐트를보고 싶습니다.
난 정말 당신의 도움을 주셔서 감사합니다 :
은 또한, 내 응용 프로그램의 나무를 추가합니다.
감사합니다,
아드리안
설명을 위해 : 장고는 제공된 URL과 일치하는 정규식을 찾을 때까지 가능한보기 목록을 내려갑니다. 일단 그렇게하면 검색이 중지되고 해당보기로 이동합니다. 'search' 뷰가 URL리스트의'dashboard' 뷰 앞에 놓여 있다면 단순히'search'를 먼저 발견했을 것이므로 실제로 작동했을 것입니다. Daniel이 지적한대로 주문이 뷰 라우팅에서 결정적인 요소가 아닌지 확인하는 것이 가장 좋습니다. – MCBama
거룩한 암소! 많은 감사합니다, Daniel! 귀하의 솔루션은 내 문제를 해결했습니다. –