js正則表達式
前端頁面的模板套用
Django基礎
js正則表達式:
1、定義正則表達式
- /.../ 用於定義正則表達式
- /.../g 表示全局匹配
- /.../i 表示不區分大小寫
- /.../m 表示多行匹配
登錄注冊驗證:
test:
判斷字符串是否符合規定的規則
rep = /\d+/; (定義規則)
rep.test('') (引號里面必須包含字母和數字才返回true,否則為false)
rep = /^\d+$/; (只有是純數字時候才返回true,否則是false)
exec:
獲取匹配的數據
示例一:

rep = /\d+/; /\d+/ str = 'hehe_99_ddd_33_gg' "hehe_99_ddd_33_gg" rep.exec(str) ["99"] rep.exec(str) ["99"] rep.exec(str) ["99"]
示例二:
關鍵字只匹配開頭的一個關鍵字

text = "JavaScript is more fun than Java or JavaBeans!" "JavaScript is more fun than Java or JavaBeans!" var pattern = /\bJava\w*\b/; undefined pattern.exec(text) ["JavaScript"]
關鍵字二次匹配(分組匹配)

text = "JavaScript is more fun than Java or JavaBeans!" "JavaScript is more fun than Java or JavaBeans!" var pattern = /\bJava(\w*)\b/; undefined pattern.exec(text) ["JavaScript", "Script"]
關鍵字全局匹配

text = "JavaScript is more fun than Java or JavaBeans!" "JavaScript is more fun than Java or JavaBeans!" var pattern = /\bJava\w*\b/g; undefined pattern.exec(text) ["JavaScript"] pattern.exec(text) ["Java"] pattern.exec(text) ["JavaBeans"] pattern.exec(text) null pattern.exec(text) ["JavaScript"] pattern.exec(text) ["Java"] pattern.exec(text) ["JavaBeans"] pattern.exec(text) null
關鍵字分組全局匹配

text = "JavaScript is more fun than Java or JavaBeans!" "JavaScript is more fun than Java or JavaBeans!" var pattern = /\bJava(\w*)\b/g; undefined pattern.exec(text) ["JavaScript", "Script"] pattern.exec(text) ["Java", ""] pattern.exec(text) ["JavaBeans", "Beans"] pattern.exec(text) null pattern.exec(text) ["JavaScript", "Script"] pattern.exec(text) ["Java", ""] pattern.exec(text) ["JavaBeans", "Beans"] pattern.exec(text) null
多行匹配:()

text = "JavaScript is more fun than Java or \nJavaBeans!" "JavaScript is more fun than Java or JavaBeans!" var pattern = /^Java(\w*)/gm; undefined pattern.exec(text) ["JavaScript", "Script"] pattern.exec(text) ["JavaBeans", "Beans"]
多行匹配:(只匹配每行開始的關鍵字,不進行二次分組匹配)

Regex Hide network messages All Errors Warnings Info Logs Debug Handled text = "JavaScript is more fun than \nJava or JavaBeans!" "JavaScript is more fun than Java or JavaBeans!" var pattern = /^Java\w*/gm; undefined pattern.exec(text) ["JavaScript"] pattern.exec(text) ["Java"] pattern.exec(text) null pattern.exec(text) ["JavaScript"] pattern.exec(text) ["Java"] pattern.exec(text) null
前端頁面的模板套用:
1、EasyUI
使用時倒入CSS和jquery即可
2、jQueryUI
使用時倒入CSS和jquery即可
上面兩種都是比較散的功能,偏向於后台管理。
3、Bootstrap:
全寨式綜合性
4、Bootstrap開源模板,網上多的去了。
響應式
@media

寫法:
@media (min-width:900px){
.c2{
background-color:red
}
}
我讓頁面寬度小於900像素后背景色變成紅色
圖標、字體
@font-face
指定使用哪個字體文件,一般在bootsrap里面找到圖標文件,直接復制html中的代碼,占到自己的html中即可。
bootrap導入方法:
1、下載bootrap文件。
2、導入方式
WEB框架:
轉載於老男孩教育銀角大王的web架構篇:http://www.cnblogs.com/wupeiqi/articles/5237672.html
本質:
眾所周知,對於所有的Web應用,本質上其實就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。

#!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, Seven") def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost',8000)) sock.listen(5) while True: connection, address = sock.accept() handle_request(connection) connection.close() if __name__ == '__main__': main()
MVC
Model View Controller
數據庫 模板文件 業務處理
MTV
Model Template View
數據庫 模板文件 業務處理
Django基礎:
准備環境:
python環境變量
pip環境變量添加
1、安裝
pip3 install django
安裝完成以后,在pip這個Scripts目錄會生成兩個文件。
創建項目方法一:
1、創建項目
django-admin.exe startproject mysite
2、運行項目
進入到生成的項目目錄,
例如:
cd mysite (這個項目下面有個manage.py文件,用python執行它即可啟動)
python manage.py runserver
注意:有人會說了,你這個創建完怎么跟pip文件一個目錄下,這樣不方便,那怎么弄呢,下面我看。
上面我們創建了pip文件的環境變量,剛好django兩個文件也生成到了里面,這樣我們可以把項目生成到其它盤里。
例如:我們要放到D盤根目錄里。
1、進入D盤里面
2、生成項目
推薦在pycharm里面只打開一個django項目,不要和其它項目都放到里面,這樣導入模塊時候會誤導你的判斷。
創建項目方法二:
這個比較簡單,就是通過pycharm幫我們創建項目。
怎么樣,是不是省了很多事兒。
創建業務線:
3、一般一個項目里面有很多的業務線,例如資產管理、監控、后台管理等等,這樣的話我們需要一個業務線(app),需要在project里面單獨給一個業務線創建一個app。
建議,進入項目名稱的同級目錄,然后執行生成命令。
python manager.py startapp cmdb
python manager.py startapp openstack
python manager.py startapp moniter
項目文件介紹:
- mysite # 對整個程序進行配置
- init
- settings # 配置文件
- url # URL對應關系
- wsgi # 遵循WSIG規范,uwsgi + nginx
- manage.py # 管理Django程序:
更改項目的IP及端口號:
上面我們說了,每個業務線創建一個app目錄,那么下面我們了解一下app目錄的作用
業務線目錄介紹:
app:
migrations 數據修改表結構(記錄數據庫表結構操作,類似於日志)
admin Django 為我們提供的后台管理
apps 配置當前app
models ORM, 寫指定的類 通過命令可以創建數據庫結構 (數據庫操作在這里)
tests 單元測試 (tests故名思議就是測試)
views 業務代碼 (這里就是我們app里面所有功能實現的地方)
上面我們說了,創建django項目(工程)和app(業務線),但是我們每個項目的html文件和css樣式文件及jquery文件放哪呢,下面我們來看。
例如我們要做這樣一個網站:
1、首先用戶打開網頁的時候會向django服務發出請求,去urls.py里面查找有沒有:
我們需要在項目里面的urls里查看有沒有這個后綴的html文件。
2、然后這個頁面肯定是一個app的界面,我們需要在這里導入一下app程序目錄。
這個目錄在哪里呢,我們去app里面找views這個文件。
我們讓用戶發送請求的時候給用戶返回一個HOME,所以這里需要做兩件事,一是導入HttpResponse模塊,然后寫一個方法,讓它給用戶返回一個HOME,注意看,上面urls里面寫的是127.0.0.1/home的時候的這個home就是urls里面前面的home,后面寫的是這個方法在哪里,
注意看,是在views下的home方法里,所以這里就告訴程序如果用戶方法127.0.0.1/home時候,去views下的home方法里去找要給用戶返回的信息。這里我們給用戶直接返回了一個HOME,當然這里也可以返回html文件,但是這么寫不規范。
那會有人會說,我給用戶要返回html內容,一並肯定還有CSS樣式和jquery文件。那這么弄呢,下面我們來看:
這里我們必須建立一個static目錄和一個templates目錄。
static里面存放CSS樣式和jquery文件。
templates里面我們方法html文件。
那又有人會問了,我直接在app里面寫html和css及jquery不行嗎?我暫時只能告訴你NO。
下面我們去告訴程序,我的這3個文件都在哪。
上面我們說了項目生成后會有一個setting.py文件,這個文件是做配置的,對,我們現在就用到了它。
一般用pycharm生成的項目,這里自動回有,但是用命令行生成的項目,有時候可能跟版本有關系,所以這里必須要檢查,沒有就添加。找到了靜態文件的路徑,那還有CSS和jquery呢,下面我們來看。
上面這個圖還是在setting.py里面配置,告訴程序我的CSS和jquery在哪。都告訴了,那我們還缺個html文件。
html文件:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="/static/commons.css" /> </head> <body style="background-color: #eeeeee"> <form action="login" method="post"> <p> <label for="username">用戶名:</label> <input id="username" type="text"> </p> <p> <label for="userpwd">密碼:</label> <input id="userpwd" type="text"> <input type="submit" value="提交"> </p> </form> <script src="/static/jquery.min.js"></script> </body> </html>
CSS樣式:
准備齊活了嗎?NO,用戶訪問的時候還是會先去urls.py里面查,那里也需要添加。
只告訴程序有127.0.0.1/login這個url可不行,我們得讓django把我們上面寫的頁面返回給用戶。
這里我們需要導入django.shortcuts下的render
不知道你發現了沒,就這么把login.html發送給了用戶,程序怎么知道login.html在哪里嗎,回答是當然知道。上面我們在項目的setting.py文件里面已經告訴了django程序,我所有的html文件都在templates里面。所以程序肯定能找到。
效果:
我必須能瞎點擊,我點擊一下提交(后台我沒有做任何的判斷)
我擦,這是怎么鬼,聽老師說以后講,這叫跨站偽造。先不管我就不想看到它,怎么辦呢。我們還得去setting.py文件里面設置。
注釋掉這行即可。
現在就使勁點擊提交,提交到天荒地老也不會有任何返回。
但是你要是寫點東西進去往后台提交,后台也能收的到,看看后台提醒我們什么了,每條信息都是一條記錄。
下面我們來寫一個基本用戶登錄驗證:
我們在提交的下面加一個span標簽,當用戶輸入密碼錯誤的時候返回信息。
首先,我們在html中已經設置了,使用POST的方式提交表單,所以這里需要加判斷,if用戶用POST方式提交方式后,獲取用戶名和密碼(注意表單中name的名字一定要和html中的name一致)
然后,獲取到了用戶名和密碼后跳轉到百度頁面。
最后,返回錯誤信息給用戶:
我們在html中使用了{{error_msg}}方法:
首先,第一次用戶獲取html文件時候后台我們給error_msg設置了一個error_msg等於空的(所以不顯示),有人說你里面不是寫了內容是“用戶名或密碼錯誤”嗎?答案是No.用戶獲取html頁面時候是以GET方式獲取並沒有走if判斷,所以error_msg為空。(刷新頁面都是以GET方式獲取數據的)
然后,我們在html中設置了以POST方式提交表單,所以這里當用戶點擊提交按鈕的時候肯定會走if條件判斷。當用戶名正確就直接跳轉到百度首頁,否則,賦值給error_msg=‘用戶名或密碼錯誤’,最后return時候會讓html中的error_msg就等於error_msg這個變量的值。所以提示用戶名或密碼錯誤!