2015-10-14 81 views
0

與導航欄來包裝頁面我有以下的Django設置:如何使用基本模板在Django

views.py

from .forms import Method1Form 
def method1_input(request): 

    if request.method == 'POST': 
     method1_form = Method1Form(request.POST, request.FILES) 
     # Handle file upload 
     if method1_form.is_valid(): 
      q = method1_form.save() 

      q.save() 
      # This is where we run code 
      # with the given parameters 
      # Do something q.run_code1() 

      # This will show the method1_result to be executed. 
      return HttpResponseRedirect(reverse('method1-result', kwargs={'id': q.id })) 

    else: 
     method1_form = Method1Form() 

    return render(request, 'my_app/method1.html', {'m1_form':method1_form}) 

urls.py

from django.conf.urls import include, url 
    from myapp import views 

    urlpatterns = [url(r'^method1/input$', views.method1_input, name='method1-input')] 

現在當前模板my_app/method1.html看起來像是thi秒。請注意,它包含導航欄。

{% load static from staticfiles %} 
<!DOCTYPE html> 
<html> 
     <head> 
     <link rel="icon" type="image/png" href="{% static "images/favicon.png" %}"/> 
     <link rel="stylesheet" href="{% static "css/bootstrap.min.css" %}"/> 
     <script src="{% static "vendors/jquery-2.1.4.min.js" %}"></script> 
     <script src="{% static "vendors/bootstrap.min.js" %}"></script> 
     <script src="{% static "vendors/bootstrap.file-input.js" %}"></script> 
     <link rel="stylesheet" href="{% static "css/style.css" %}"/> 
     <meta charset="utf-8"> 
     <title>Cool title</title> 
     </head> 


<body> 
    <!--- BEGINNING OF NAVBAR --> 

    <nav class="navbar navbar-inverse" style="border-radius:0px;"> 
    <div class="container-fluid"> 
     <div class="navbar-header"> 
      <a class="navbar-brand active" href="{% url 'index' %}">ICEPOP</a> 
      </div> 
     <div> 
       <ul class="nav navbar-nav"> 
         <li><a href="{% url 'analysis-method' %}">Home</a></li> 
         <li><a href="{% url 'about' %}">About</a></li> 
         <li><a href="{% url 'help' %}">Help</a></li> 
         <li><a href="{% url 'contact' %}">Contact</a></li> 
       </ul> 
       <ul class="nav navbar-nav navbar-right"> 
       <li><a href="{% url 'apidoc' %}"><span class="glyphicon glyphicon-cutlery"></span>&nbsp;&nbsp;API</a></li> 
       </ul> 
     </div> 
     </div> 
    </nav> 

    <!--- END OF NAVBAR --> 


    <h1> Content specific to METHOD1 </h1> 
</body> 
</html> 

我想要做的是把文件分成base.html模板只包含導航欄和method1_only.html。所以在這一天結束時method1_only.html文件將只包含來自base.html的繼承和特定於它的文本。在Django中做這樣的包裝有什麼計劃?

+0

https://docs.djangoproject.com/en/1.8/ref/templates/language/#template-inheritance –

回答

0

好吧,django建議使用base.html文件不僅包含導航欄,而且包含所有頁面的所有常用工作人員:塊,導航欄,頁腳,側面板在站點上可用。因此,我認爲你應該這樣做下一個方法:

base.html 

    {% load static from staticfiles %} 
    <!DOCTYPE html> 
    <html> 
      <head> 
      <link rel="icon" type="image/png" href="{% static "images/favicon.png" %}"/> 
      <link rel="stylesheet" href="{% static "css/bootstrap.min.css" %}"/> 
      <script src="{% static "vendors/jquery-2.1.4.min.js" %}"></script> 
      <script src="{% static "vendors/bootstrap.min.js" %}"></script> 
      <script src="{% static "vendors/bootstrap.file-input.js" %}"></script> 
      <link rel="stylesheet" href="{% static "css/style.css" %}"/> 
      <meta charset="utf-8"> 
      <title>Cool title</title> 
      </head> 


    <body> 
     <!--- BEGINNING OF NAVBAR --> 

     <nav class="navbar navbar-inverse" style="border-radius:0px;"> 
     <div class="container-fluid"> 
      <div class="navbar-header"> 
       <a class="navbar-brand active" href="{% url 'index' %}">ICEPOP</a> 
       </div> 
      <div> 
        <ul class="nav navbar-nav"> 
          <li><a href="{% url 'analysis-method' %}">Home</a></li> 
          <li><a href="{% url 'about' %}">About</a></li> 
          <li><a href="{% url 'help' %}">Help</a></li> 
          <li><a href="{% url 'contact' %}">Contact</a></li> 
        </ul> 
        <ul class="nav navbar-nav navbar-right"> 
        <li><a href="{% url 'apidoc' %}"><span class="glyphicon glyphicon-cutlery"></span>&nbsp;&nbsp;API</a></li> 
        </ul> 
      </div> 
      </div> 
     </nav> 

     <!--- END OF NAVBAR --> 
     <h1>{% block method_content %}{% endblock method_content %}</h1> 
    </body> 
    </html> 

而在你method1_only.html您將擴展base.html文件,並把你的方法內容method_content塊這樣

{% extends "base.html" %} 
{% block method_content %}Here goes your method content{% endblock method_content %} 

希望這將有助於。