1. 程式人生 > >都說Djnago框架重,那就讓哥用15行程式碼寫個django web程式!

都說Djnago框架重,那就讓哥用15行程式碼寫個django web程式!

很多初學django的小夥伴都會了解到,django是個大而全的網路框架,本身集成了ORM、模型繫結、模板引擎、快取、Session等諸多功能。要學這麼多內容,要學到猴年馬月啊!?

不過世界真是奇妙,現在咱們就在猴年馬月裡!2016年是猴年,按農曆計算,6月5日至7月3日是庚午月,正好是“猴年”裡的“馬月”。那麼問題來了:你想不想在猴年馬月裡學會django呢?

下面我們嘗試一下,用15行程式碼結合django寫個web程式,來一次django的清爽體驗。

django複雜嗎

當然,複雜的很呢!!!如果你是跟著官方文件自學過,就會知道,那裡有個初級專案是投票網站,分了6部分才講完。而且如果你是個完完全全網路程式設計的初學者,估計過了第3篇才看出個這個專案的樣子。而且在學習中,還需要了解django最重要的幾方面內容:

比如目錄結構:

執行django-admin startproject sitename後,你會看見sitename資料夾裡的四個檔案:

__init__.py
settings.py
urls.py
wsgi.py

再執行python manage.py startapp app01後,還可以在app01這個app的目錄裡看出來所謂的MTV架構。

__init__.py
admin.py
models.py # M,定義各種資料類
templates  # T,這是個目錄,放html模板的,當然你可以建到專案路徑下 
views.py     # V,根據路由編寫的響應各種請求的函式
app.py
...

如果你用過pycharm,新建工程和app後的程式碼結構如圖所示,帥哥做的很好,直接用了。 

當然,這些只是個初級認識,後面還要學習urls處理各種路由,然後怎麼定義資料庫,怎麼前後端傳資料,手續很複雜啊!

但是,你看看人家flask,bottle,分分鐘就弄出個hello world啊!立馬就知道大致的框架用法了,django是不是也能這麼玩呢?

清爽版本

巧了,國外早有django愛好者嘗試過django的簡單玩法,而且還專門寫了本書。今天就拋磚引玉,大家一起來玩玩!

talk is simple, show me the code!

# -*- coding:utf-8 -*-

# a mini Django project

import sys

from django.conf import settings
from django.conf.urls import url
from django.http import HttpResponse
from django.core.management import execute_from_command_line

settings.configure(
        DEBUG = True, # 除錯狀態
        SECRET_KEY = 'iamasecretkeyhahahaha', # 預設的session需要的key,也為了CSRF
        ROOT_URLCONF = sys.modules[__name__], # url根目錄的配置
    )

def home(request):
    return HttpResponse('a mini django website')  # 主頁

urlpatterns = [
        url(r'^$', home), # 元組型別,預設請求傳送到home函式
    ]

# 啟動程式
if __name__ == "__main__":
    execute_from_command_line(sys.argv)

新建個檔案,比如miniWeb.py,寫上這些程式碼,然後在當前目錄下,命令列執行:

>python miniWeb.py runserver

看到這些說明執行成功!

System check identified no issues (0 silenced).
June 13, 2016 - 12:23:51
Django version 1.9.7, using settings None
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

然後用瀏覽器開啟http://localhost:8000/, wow, look at that! a mini django website應該已經出現在你的瀏覽器裡!

是不是太簡單了? 哈哈! 要的就是這種清爽感覺!爽不爽?不算註釋的話,也就15行吧。

簡單解釋一下:這些程式碼其實就是把一個django標配的settings,view,url,manage幾個檔案進行了簡化與整合,目的在於用最小的程式碼向你展示django的網頁響應過程。 實際也就是把django中的請求生命週期放在一個檔案中展示了(我們這裡還沒有涉及到model部分)。 

流程如下:

1.__name__這行在學習python的時候每天都會用到,就是一個入口函式,在我們這裡就是一個命令列的入口,通過命令列傳入runserver引數,然後django內部會自己處理;
2.然後我們開啟http://localhost:8000/,這時候訪問的是網站的根目錄url,我們在urlpatterns裡面,為這個指明瞭要跳轉的函式,也就是home
3.在home函式中,會通過Http響應,將頁面內容返回給網頁前端;
4.於是,我們看到了頁面內容a mini django website.

升級點的清爽版本

只有一行文字啊,這網站太low了!咱們給他加點鹽,弄個html模板好不好?

還是直接看程式碼,關鍵地方我加了註釋:

# -*- coding:utf-8 -*-

# a mini Django project
import os  # 新增模板路徑使用
import sys

# 儲存當前路徑
BASE_PATH=  os.path.dirname(__file__)

from django.conf import settings
from django.conf.urls import url
# from django.http import HttpResponse # 不需要了
from django.shortcuts import render # 渲染模板,讓html中顯示後臺自定義內容
from django.core.management import execute_from_command_line

settings.configure(
        DEBUG = True, # 除錯狀態
        SECRET_KEY = 'iamasecretkeyhahahaha', # 預設的session需要的key,也為了CSRF
        ROOT_URLCONF = sys.modules[__name__], # url根目錄的配置
        TEMPLATE_DIRS = (
                os.path.join(BASE_PATH, 'templates'), # 告訴django在當前目錄下找templates資料夾,這裡還是元組,記得逗號!
            ), # 這裡記得有逗號,因為setting的配置也是元組
        INSTALLED_APPS = ( # 預設的認證和內容的app,需要新增避免傳資料的錯誤
            'django.contrib.auth',  
            'django.contrib.contenttypes',
        ),
    )

def home(request):
    #return HttpResponse('a mini django website')  # 主頁
    data = {'name': 'alex', 'age':18} # 通過模板語言傳到頁面的資料
    print data
    return render(request, 'index.html', {'data': data})

urlpatterns = [
        url(r'^$', home, name='home'), # 元組型別,預設請求傳送到home函式
    ]

# 啟動程式
if __name__ == "__main__":
    execute_from_command_line(sys.argv)

比剛才多了些模板檔案的內容,這時候我們還需要在當前目錄下新建一個資料夾,名字就是templates,然後在裡面新建一個html檔案,可以像我這個一樣,

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>mini django</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
</head>
<body>
<h1>顯示一下data:</h1>
    {{ data }}

    <h2>分開輸出:</h2>
    <li>name:{{data.name}}</li>
    <li>age:{{data.age}}</li>
</body>
</html>

注意裡面用到了一點模板語言,用{{}}表示的,其實就是個上面render函式最後的引數替換而已。

也就是這句:

return render(request, 'index.html', {'data': data})

注意這裡,為了和django預設新建工程一致,我把當前目錄名和py檔名字都改成一樣的了:miniDjango.

命令列執行: >python miniDjango.py runserver

再次開啟瀏覽器,訪問:http://localhost:8000/, wow, look at that!

顯示一下data:

{'age': 18, 'name': 'alex'}
分開輸出:

name:alex
age:18

是不是高大上了很多!

甚至,我們可以直接用Bootstrap的http://v3.bootcss.com/examples/jumbotron/這個模板測試一下。

首先儲存這個網頁的原始碼為bt.html檔案,放到templates資料夾。

然後新增url和view函式: 如下所示:

def bt(request):
    data = {'title': 'alex', 'headings':['我是標題1', '我是標題2','我是標題3']} # 通過模板語言傳到頁面的資料
    return render(request, 'bt.html', {'data': data})

urlpatterns = [
        url(r'^$', home, name='home'), # 元組型別,預設請求傳送到home函式
        url(r'^bt/$', bt, name='bt'), # 元組型別,預設請求傳送到bt函式
    ]

然後訪問http://localhost:8000/bt/就可以看見效果了! 如下圖所示: 

繼續學習吧

如果說學習django像做一桌大餐,上面咱們討論的這點內容頂多是做了個番茄炒蛋。想要學習更多,還需要好好的多加練習,多和一起學習的小夥伴討論,最好再有個名師指點。

人生苦短,我用Python,加油吧,小夥伴們!

相關推薦

Djnago框架15程式碼django web程式

很多初學django的小夥伴都會了解到,django是個大而全的網路框架,本身集成了ORM、模型繫結、模板引擎、快取、Session等諸多功能。要學這麼多內容,要學到猴年馬月啊!? 不過世界真是奇妙,現在咱們就在猴年馬月裡!2016年是猴年,按農曆計算,6月5日至7月3

害怕被淘汰我們開始做出點改變吧

進入IT行業已經幾年了,總是不停的寫著各種業務程式碼,修改各種bug,處理各種問題,經常做夢都會夢到自己在修改bug,工資不見漲,技術也不見太多長進,這可能是大多數程式設計師的境遇,這邊剛剛罵完產品經理,這邊又只能像孫子一樣接著各種扯蛋的需求,總有人說,對於公司

幹了半年的java Web知道自己特別喜歡遊戲開發去幹吧

軟件公司 負責人 是我 美好 我想 roi spa 這樣的 叫我 之前學習了好久的java Web,有非常多的感慨,也有非常多的辛酸。由於家裏老媽的原因,須要動一個大手術,危及生命的病。無奈我僅僅能先辭去工作,請假也不知道要請多久,公司大概也不會允許,看著照應我的

既然選擇了帶牙套老老實實每個月去復診

牙套在殘酷的社會競爭中,牙齒是否整齊是很重要的一個方面,一些朋友為了讓不整齊的牙齒變整齊,選擇了帶牙套矯正,不過,又不知道是不是要每個月都復診呢?帶牙套之所以成為很多人的選擇,是因為牙齒對相貌影響很大。優異的成績或許並不能獲得別人的青睞,而牙齒對一個人顏值的提升是非常重要的。帶牙套,是一種常用的牙齒矯正方式。

如果看了此文你還不懂傅裏葉變換過來掐死我吧【完整版】

處理 為知 自然 pic 是不是 wikipedia sina 學習方法 依次 如果看了此文你還不懂傅裏葉變換,那就過來掐死我吧【完整版】 轉自 https://blog.csdn.net/u012361418/article/details/46277779 還記得上

[work] 如果看了此文你還不懂傅立葉變換過來掐死我吧【完整版】

我保證這篇文章和你以前看過的所有文章都不同,這是 2012 年還在果殼的時候寫的,但是當時沒有來得及寫完就出國了……於是拖了兩年,嗯,我是拖延症患者…… 這篇文章的核心思想就是: 要讓讀者在不看任何數學公式的情況下理解傅立葉分析。 傅立葉分析不僅僅是一個數學工具,更是一種可以徹底顛覆一個

如果看了此文你還不懂傅立葉變換過來掐死我吧【完整版】

原文出處: 韓昊    1 2 3 4 5 6 7 8 9 10 作 者:韓 昊 知 乎:Heinrich 微 博:@花生油工人 知乎專欄:

錯過了先飛多飛......

目錄 前言 總結 前言   什麼是分類演算法    通俗地講分類演算法就是把大量已知特徵及類別的樣本物件輸入計算機,讓計算機根據這些已知的類別與特徵歸納出類別與特徵之間的規律(準確地說應該是分類模型),最終目的是運用得到的分類模型對新輸入的物件(該

學了Python不想去給別人打工做做這些事兒吧

  很多學習計算機開發的小夥伴自己學習了很久的語言開發,具有一定的開發功底,技術什麼的都不在話下,但是其中有相當大一部分的程式設計師小夥伴不想進公司給別人打工,不想每天束縛在公司規章制度的牢籠中,那就看看下面的文章吧,肯定對你有所幫助。 學習Python中有不明白推薦加入交流

如果看了此文你還不懂傅立葉變換過來掐死我吧【完整版教程】

傅立葉分析是訊號處理的核心內容,我一直沒有徹底理解,看到這篇教程覺得講得非常精彩,何況還是學長寫的,所以轉載此文。 作 者:韓 昊 知 乎:Heinrich 微 博:@花生油工人 知乎專欄:與時間無關的故事 謹以此文獻給大連海事大學的吳楠老師,柳曉鳴老師,王新年老師以及

如果看了這篇文章你還不懂傅立葉變換過來掐死我吧~~

本文轉載至https://zhuanlan.zhihu.com/p/19763358,原創作者韓昊,轉載宣告:謹以此文獻給大連海事大學的吳楠老師,柳曉鳴老師,王新年老師以及張晶泊老師。     我保證這篇文章和你以前看過的所有文章都不同,這是 2012 年還在果殼的時候

QPS這麼高多級快取吧

查詢mysql資料庫時,同樣的輸入需要不止一次獲取值或者一個查詢需要做大量運算時,很容易會想到使用redis快取。但是如果查詢併發量特別大的話,請求redis服務也會特別耗時,這種場景下,將redis遷移到本地減少查詢耗時是一種常見的解決方法 多級快取基本架構 說明:儲存選擇了 m

你厭惡現在的圈子努力跳出去

01 一個男讀者給我講了一個故事,讓我給他評評理。 他跟兩個哥們打牌,忙活一晚上,要結賬了,一個輸給他6塊8,另一個輸給他5塊2,5塊2的那哥們要求“抹個零”,他猶豫了一下,同意了,於是收了5塊,6塊8的一看你能給他抹也得給我抹吧,說也“抹個零”吧,想給他6塊,這下他不同意,還興致勃勃地給這

整個網際網路行業缺前端工程師我們如何先人一步

外媒網站Randstad US收集了目前IT領域各行業的資料,分析了勞動力趨勢等資料,預測出在2018年,前端開發是三大最具有就業前景職業之一,而前端開發行業的薪資也會越來越高。 昨天發的文章(2018年,為什麼前端工程師薪資越來越高?)說到目前市場不是缺少前端,而

有人對他說:如果連 Python 學不會不要學程式設計了

微信公眾號 關鍵字全網搜尋最新排名 【機器學習演算法】:排名第一 【機器學習】:排名第一 【Python】:排名第三 【演算法】:排名第四 前段時間,有讀者在後臺留言問我,「新手入門程式設計,怎麼避免從入門到放棄?」,在我看來,這個問題很難三言兩語就說清楚。 有一次,一個朋友向我推薦了侯爵的課程和教

如果一個button被用於觸發ajax不能再它進行form表單提交了

 form表單提交,和ajax提交不能同時存在,如果這個button被用於觸發ajax,那就不能再用它進行form表單提交了 如果一個頁面裡面,既有ajax傳參,又有表單傳參,那麼,必須設定兩個按

說依賴注入從實現的角度來一發以android作為引子..

用過諸多的view注入的框架,例如xutils,butterknife,KJLibraray,Guice等,你瞭解過如何實現嗎? 從零來一發, 今天老司機為新來者帶帶路~其他老司機略過 從demo上,我只實現兩個功能@InjectView,@OnClick。

如果看了這篇文章還不懂卷積過來掐死我吧

卷積 最近總是和卷積打交道,工作需要,每天都要碰到它好幾次,不勝煩惱,因為在大學時候學訊號與系統的時候就沒學會,我於是心想一定要把卷積完全搞明白。正好同辦公室的同學也問我什麼是卷積,師姐昨天也告訴我說:"我也早就想把這個問題搞明白了!"經過一段時間的思考之後,有一些很

聽說你天天加班不給你加薪了

比自己不加薪更痛苦的是什麼?別人加薪了。 比別人加薪更痛苦的是什麼?“別人”沒有我努力(加班多)。 其實,老闆都看得見。 無論是你天天留下來加班到八九點,還是你P了十分鐘圖晒的朋友圈,聰明又善良的老闆都會勤勤懇懇的點贊。 然而,點贊是因為老闆的職業素養,而不是你的看