python Web開發架構-Django (1),python-django

來源:互聯網
上載者:User

python Web開發架構-Django (1),python-django

以前用web.py(另外一款輕量級web開發架構)做一個監控管理平台,沒有做特別的記錄就不好拾起來。最近做一個日誌彙總系統,使用的是django,這次就記下來,方便查詢。

Django是一個高效的web開發架構,上手容易,便於調試和發布。

設計模式

它的設計遵循經典的web設計架構-MVC(Model-view-controller),一個應用分為四部分:

  • models.py:檔案主要用一個 Python 類來描述資料表。 稱為 模型(model) 。本文不對model做詳細介紹,資料庫的存取是單裝了mysql,自己做的dao。
  • views.py:檔案包含了頁面的商務邏輯。是模板和模型間的橋樑,接收前端url請求,進行商務邏輯實現,最後返回資料(結果或模板)。
  • urls.py:一個設定檔,用於映射 URL到視圖。
  • xxx.html: html 模板,它描述了頁面設計,支援簡單的範本語言。
環境準備

python & django,本文使用的是python-2.7.9,django-1.7.6

範本語言

在html中使用範本語言定義頁面架構和內容,後台由模板引擎渲染成完整的html。{% %}用於邏輯控制,{{}}用於變數引用

模板間關係

  • include:{% include 'nav.html' %},引入布局單元
  • 模板繼承:定義一個基礎模板(定義頁面架構),由子模板來繼承(填充個人化頁面子塊)。基礎模板使用block標籤-{% block %},每個block下的這一塊內容將有可能被子模板覆蓋。子模板用extends標籤來繼承基礎模板{% extends "base.html" %}。
//base.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><html lang="en"><head>    <title><strong>{% block</strong> title <strong>%}{% endblock %}<</strong>/title></head><body>    <h1>My helpful timestamp site</h1>    {% block content %}{% endblock %}    {% block footer %}    <hr>    <p>Thanks for visiting my site.</p>    {% endblock %}</body></html>//子模板 current.html<strong>{% extends "base.html" %}{% block title %}</strong>The current time<strong>{% endblock %}</strong>{% block content %}<p>It is now {{ current_date }}.</p>{% endblock %}

基本控制標籤

  • {% if %} {% else %} {% endif %}:支援and/or/not關鍵字,不支援and/or組合,不支援用圓括弧來組合比較操作,不支援 elif
  • {% for %}{% endfor %}:迴圈文法是 for X in Y 
  • {% ifequal %}{% endifequal %}或者ifnotequal:只有模板變數,字串,整數和小數可以作為 {% ifequal %} 標籤的參數
  • {{var|op}}:模板過濾器,在變數被顯示前修改它的值。op有lower/upper/length/join等操作

補充:python中空列表、空元組、空字典、Null 字元串、0、None對象、False對象代表布爾值假,其餘都是真布爾值。

相關技術點

前端頁面:HTML、JavaScript、HTML DOM、JQuery、ajax、JSON

後端邏輯:python

頁面模板:建議網上找基於bootstrap的網頁模板

執行個體流程

項目建立

django-admin.py startproject tulip

獲得如下的目錄,manage.py/__init__.py/wsgi.py不需要修改,另外手動建立static目錄用於儲存js/css,建立templates用於儲存html模板,建立lib用於儲存依賴庫

tulip/    manage.py    tulip/        __init__.py        settings.py        urls.py        wsgi.py        static/        templates/

邏輯實現

寫頁面

//search.html<select id="servicename" class="form-control" onchange="getServiceInfo()"><option value="">應用服務</option>{% for service in servicenames %}<option>{{ service }}</option>{% endfor %}</select>

配置urls.py

from django.conf.urls import patterns, include, urlurlpatterns = patterns('tulip',//tulip是模組名,作為後續映射路徑的共同首碼url(r'^$', 'searchText.index'),)
視圖邏輯

//searchText.pyfrom django.shortcuts import render_to_responsefrom django.http import HttpResponsedef index(request):    dao = TulipDao()    servicenames = dao.getServicenames()    return render_to_response('search.html', locals())    #或者return render_to_response('search.html',{'servicenames':servicenames})    #locals()返回的字典包含所有局部變數的名稱與值的映射     

啟動應用

python manage.py runserver 0.0.0.0:8000 //0.0.0.0允許任意非本地串連,不指定ip則僅監聽本地串連


文章太長了,再分一篇吧,下一篇記錄一些技巧和參考資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.