Python 中的 web 常見框架(Django 專案1)
- 大包大攬 Django
- 力求精簡 web.py 和 Tornabo
- 新生代微框架 Flask 和 Bottle
微框架
優勢:
- 聚焦業務邏輯
- 學習成本低
- 靈活性和伸縮性較強
劣勢:
- 很多邏輯需要手動編寫
- 安裝大量模組後體積較大
Flask
保持核心簡單,易擴充套件。
不包括資料庫抽象層,表單驗證等。 可通過新增擴充套件的方式新增功能
安裝
pip install flask
通過匯入 flask 模組,來驗證安裝是否成功。
表單開發
表單標籤
用於宣告表單範圍,位於表單標籤中的元素將被提交
語法: `<form></form>
屬性: method, Enctype, action
表單域
表單域包含文字框,密碼框等多種型別
語法: <input.../>
屬性: type,name,value
表單域種類
文字框: <...type:text>
密碼框:<...type:password>
文字區域:<...type:textarea>
檔案上傳框:<...type:file>
單選框:<...type:radio>
核取方塊:<...type:checkbox>
核取方塊的值為陣列形式。
表單按鈕
提交按鈕
復位按鈕
一般按鈕
表單提交方式
GET
POST 資料放置在 HTML Header 中提交。
GET 可以被瀏覽器快取
資料暴露 URL
適合:單純請求資料,不進行其他操作
表單資料較短,不超過 1024 字元
對安全性要求一般
POST URL 可以被快取,資料不被快取
請求不便分享,沒有長度限制
適合:不僅僅用於請求,需要將資料插入資料庫內
表單資料過長
傳送的資料不是 ASCII 編碼
Djongo
優勢:
- 詳細的文件
- 全套結局啊方案
- 強大的 URL 路由配置
- 完善的自主管理後臺
劣勢:
- 緊耦合
- 自帶 ORM 不夠強大
- Template 較弱
[圖片上傳失敗...(image-54d6bb-1519953931235)]
MTV 模型工作模型:
<img src="https://lh3.googleusercontent.com/-GaKxySImq-0/WoJQLmpzNOI/AAAAAAAAAGg/YpuMPv-m1O4SsBXzWqEgJGv5LpM6UK9JwCHMYCw/I/15184896385708.png" width = "400" alt="MySQL"/>
建立虛擬環境 virtualenv
如果你生產或開發環境需同時支援 Python 2 和 Python 3 ,那就需要 virtualenv。我們是從零開始學習 Django,所以可以直接使用 venv。簡單來說,venv 模組是 Python 3.3 版本之後,標準庫自帶的虛擬環境建立和管理工具,在 Python 3 版本是代替 virtualenv。
使用 venv 在當前系統中建立出一個環境,該環境可以跟當前系統互不影響,你可以隨意折騰。出現問題,只要刪除即可,不會影響到當前系統。另外,有了 virtualenv 虛擬環境之後,我們就可以把那個資料夾整體拷貝了,部署起來方便很多。
步驟:
一. 建立專案目錄
建立專案主目錄。並進入主目錄,建立專案目錄
mkdir DjangoWeb
cd DjangoWeb
mkdir DjangoWebFirst
二. 建立虛擬環境,啟用虛擬環境--no-site-packages
表示不安裝系統中的第三庫
建立虛擬環境。
virtualenv --no-site-packages env_python
三. 使用 pycharm 建立專案
[圖片上傳失敗...(image-ce1d91-1519953931235)]
在 location 填入專案目錄所在路徑
在 Interpreter 填入新建的虛擬環境
在 Application 填入第一個網站的名字
建立好後,目錄類似這樣:
[圖片上傳失敗...(image-53318b-1519953931236)]
建立資料庫
python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK
(env_python) fuyiweng@fuyiwengdeMacBook-Pro:~/Documents/study/NiuCodeLesson/DjangoWeb/DjangoWebFirst% python3 manage.py makemigrations
Migrations for 'django_demo':
django_demo/migrations/0001_initial.py
- Create model People
新建資料庫:
在 models.py 中新建一個 People 類,
在終端執行:python3 manage.py makemigrations
建立建表策略
執行表合併:
NiuCodeLesson/DjangoWeb/DjangoWebFirst% python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, django_demo, sessions
Running migrations:
Applying django_demo.0001_initial... OK
在 views 中建立頁面:
在 views 檔案中,新建 first_try 類:
from django.shortcuts import render
from django.http import HttpRequest, HttpResponse
from django_demo.models import People
from django.template import Context, Template
# Create your views here.
def first_try(request):
person = People(name='jack', job='officer')
html_string = '''
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.6/semantic.css" media="screen" title="no title">
<title>diango</title>
</head>
<body>
<h1 class="ui center aligned icon header">
<i class="hand spock icon"></i>
Hello, {{ person.name }}
</h1>
</body>
</html>
'''
# 將 html 字元轉成模板
t = Template(html_string)
# 組上下文
c = Context({'person': person})
# 渲染模板
web_page = t.render(c)
return HttpResponse(web_page)
在 urls 中增加 first_try 的 url:
- 引入 first_try
from django_demo.views import first_try
- 增加路徑 urlpatterns 下新增
path(r'first_try/', first_try),
完成。
原始碼地址:
『NiuCodeLesson/DjangoWeb/DjangoWebFirst/』:
https://github.com/wengfe/NiuCodeLesson/tree/master/DjangoWeb/DjangoWebFirst
部落格地址:
『wengfe.win』:http://www.wengfe.win/2018/02/11/2018-02-11/#more
相關文章
- Python常見web框架彙總PythonWeb框架
- Python全棧Web(Django框架、模型中的CRUD)Python全棧WebDjango框架模型
- python中web開發框架Django的學習PythonWeb框架Django
- Python之Web框架DjangoPythonWeb框架Django
- Python常見專案部署流程Python
- Django中的session常見配置DjangoSession
- Django Web框架/Python框架-李強強-專題視訊課程DjangoWeb框架Python
- Python全棧Web(Django框架、模板)Python全棧WebDjango框架
- Python,Django建立web專案project和應用appPythonDjangoWebProjectAPP
- python基礎 之 Django框架建立專案的方法入門PythonDjango框架
- python django中restful框架的使用PythonDjangoREST框架
- Django框架簡介和建立django專案的基本流程Django框架
- 專案管理中四種常見的階段專案管理
- 分分鐘教你Python Web開發框架DjangoPythonWeb框架Django
- Python中的常見方法Python
- django專案筆記1Django筆記
- 7種常見且實用的Python框架!Python框架
- Python框架DjangoPython框架Django
- Django(1) - 初識Django框架Django框架
- Python 建立一個Django專案PythonDjango
- Vue.js 前端專案在常見 Web 伺服器上的部署配置Vue.js前端Web伺服器
- python檔案的常見的操作有哪些?Python
- Python中Django是什麼?Django框架優點有哪些?PythonDjango框架
- 如何在Linux安裝Python+JDK+Mysql+Tomcat+Django以及簡單的跑一個java web專案和一個簡單的Django專案LinuxPythonJDKMySqlTomcatDjangoJavaWeb
- react建立專案&&常見的三大HookReactHook
- 常見的專案管理問題有哪些?專案管理
- web專案常問面試題Web面試題
- 總結開源專案中的常見壞實踐(Bad Practice)
- wsgiref模組、web框架、django框架簡介Web框架Django
- vue-axios的總結及專案中的常見封裝方法。VueiOS封裝
- WEB常見的攻擊方式Web
- 常見的七種Hadoop和Spark專案案例HadoopSpark
- Vue專案常見問題彙總Vue
- Flask專案常見面試問題Flask面試
- Vue專案打包常見問題整理Vue
- 05 常見微服務專案結構微服務
- Flutter專案實戰(1):通用專案框架搭建Flutter框架
- 常規web專案 docker-compose 例子WebDocker