16-1 djanjo介紹

一 web框架的本質css

1用戶的瀏覽器(socket客戶端) 和 網站的服務器(socket服務端)之間


2 HTTP協議:
  1.1 請求(request)

  1.2. 響應(response)

3 web框架本質 html

  a. 收發socket消息 web服務器

web應用程序

  b. 根據不一樣的請求執行不一樣的函數返回不一樣的內容
  c. 字符串替換python

二 關於wsgi協議mysql

1 Django開發階段使用 wsgiref 模塊來處理socket消息

2 Django部署到線上使用 uWsgi/gunicorn 模塊來處理socket消息


3 Python中 web服務器程序和Web應用程序之間傳遞消息:
WSGI協議web

三 Python裏面Web框架的分類正則表達式

  1. 本身實現b和c,使用第三方的a:
  Django框架
  2. 本身實現b,使用第三方的a和c:
  Flask
  3. 本身實現a\b\c:
  Tornadosql

四 djanjo的安裝和建立djanjo項目數據庫

1 安裝django

pip3 install django==1.11.11

pip3 list 查看當前Python解釋器安裝了哪些第三方包

pip3 install django==1.11 -i https://pypi.tuna.tsinghua.edu.cn/simple    #  -i指定源

pip3 uninstall django   #卸載bootstrap

 

2 建立djanjo項目

2.1 命令行建立(不經常使用)

先選擇一個目錄,而後運行下面命令

 django-admin startproject s21django
在當前目錄下建立一個名爲 s21django 的Django項目

2.2 用pycharm建立

---》1新建項目

---》2指定項目路徑和選擇環境變量

--》指定app名字

---> 要在新的窗口打開

3 啓動djanjo項目

1.1 pyhcarm啓動方法,注意不能右鍵運行啓動!

 

2.1 命令行啓動(不經常使用)

  --》1. 切換到項目目錄下!
  --》2. python manage.py runserver
    python manage.py runserver 127.0.0.1:8090 #指定ip和端口
    python manage.py runserver 8091

4 建立app

1.1 在PyCharm建立(見建立項目圖,只能建立一個)

2.1 在命令行建立
1. 切換到項目目錄下!
2. python manage.py startapp app名字
3. 在settings.py裏面註冊你新建立的那個app,以下

 1 # 當前Django項目安裝的app都有哪一些
 2 INSTALLED_APPS = [
 3     'django.contrib.admin',
 4     'django.contrib.auth',
 5     'django.contrib.contenttypes',
 6     'django.contrib.sessions',
 7     'django.contrib.messages',
 8     'django.contrib.staticfiles',
 9     'app01.apps.App01Config',
10     'app02'  # 將咱們建立的app02在Django項目註冊一下
11 ]

5. Django項目使用靜態文件的配置
--》1. 在項目目錄下新建一個保存靜態文件的文件夾
--》2. 告訴Django你去我上面新建的路徑去找靜態文件
  settings.py中 加上相應的配置項:以下:

 
 
STATIC_URL = '/static/'
# 靜態文件實際保存的目錄是哪一些
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
 

-->3 在html頁面引入剛纔配置的靜態文件js和bootstrap

<link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css">

 

五 MVC和MTV (瞭解便可)

1. MVC --> Model View Control
2. MTV --> Model Template views

六 基本路由系統 (urls.py)

1. 路由是一個有順序的列表,從上到下去匹配
2. 路由的路徑是根據正則表達式來匹配的

七. 基本視圖函數(views.py)
1. 基礎必會三件套
from django.shortcuts import HttpResponse, render
1. HttpResponse('字符串')
2. render(request, 'xx.html')
3. redirect 調轉到一個新的頁面

例子:

   # 跳轉到index頁面,讓用戶的瀏覽器去訪問新的頁面(index頁面)
     return redirect("/index/")     
      return HttpResponse("登陸失敗")
    # 給用戶返回一個頁面 用來作登陸
    return render(request, 'login.html')

 八 基本模板引擎(templates/xx.html)

2. 經常使用語法:
1. {{ 變量名 }}
2. {{ 變量名.key }}

3. for循環
{% for x in xx %}
{{x}}
{% endfor %}
4. if判斷
{% if 條件 %}
...
{% else %}
...
{% endif %}

九 使用orm鏈接數據庫

https://www.cnblogs.com/liwenzhou/articles/8276526.html orm具體介紹

 鏈接實例:

1 在setting.py裏面設置要鏈接的數據庫

 1 DATABASES = {
 2     'default': {
 3         'ENGINE': 'django.db.backends.mysql',  # 引擎
 4         'NAME': 's21hao',  # 數據庫名
 5         'HOST': '127.0.0.1',  # 主機
 6         'PORT': 3306,  # 端口
 7         'USER': 'root',  # 用戶名
 8         'PASSWORD': ''  # 密碼
 9     }
10 }

2 告訴Django用pymysql鏈接MySQL數據庫
在跟項目同名的文件夾下面的__init__裏面添加

 1 import pymysql

2 pymysql.install_as_MySQLdb() 

3 models.py裏面用orm寫數據庫語句,建立數據庫

1 class Publisher(models.Model):
2     id=models.AutoField(primary_key=True)
3     name=models.CharField(max_length=32)
4 
5     def __str__(self):
6         return self.name

4 點開pycharm裏面的terminal,而後運行

 1 python manage.py makemigrations --> 將models.py的改動記錄在小本本上

2 python manage.py migrate  

5 創建數據庫表結構成功!能夠去數據庫裏查看

 

6 若是你想刪除,則吧models.py裏面的數據註釋掉,而後再次運行第四項的兩條語句便可

十 使用orm語句進行對數據庫單表的增刪改查

 1      1. 查詢
 2             models.Publisher.objects.all()               --> 查詢全部的出版社數據
 3             models.Publisher.objects.get(id=1)           --> 查詢id=1的那個出版社
 4         2. 增長
 5             models.Publisher.objects.create(name='xx')   --> 建立一個名爲xx的出版社
 6         3. 刪除
 7             models.Publisher.objects.get(id=2).delete()  --> 刪除id=2的那個出版社
 8         4. 編輯
 9             obj = models.Publisher.objects.get(id=2)     --> 找到要編輯的對象
10             obj.name = "新值"                             --> 修改
11             obj.save()                                   --> 將修改同步到數據庫

十一 request相關知識點

 1     1. request.method  --> 獲取用戶請求的方法
 2         - GET          --> 表示用戶向我要一個頁面這種操做
 3         - POST         --> 表示用戶向我發送一些數據
 4     2. request獲取URL中的參數
 5         /xx/?name=alex&age=9000
 6         request.GET                        --> 大字典
 7             - request.GET['name']          --> 不推薦
 8             - request.GET.get("name")      --> 推薦
 9     3. request.POST                        --> 一個大字典,存的是用戶post發過來的數據
10         1. request.POST['key']             --> 不推薦
11         2. request.POST.get('key', '默認值')

十二 djanjo裏面先後端交互的流程(登陸頁面)

0 djanjo目錄介紹

1 mysite/
2 ├── manage.py  # 管理文件
3 └── mysite  # 項目目錄
4     ├── __init__.py
5     ├── settings.py  # 配置
6     ├── urls.py  # 路由 --> URL和函數的對應關係
7     └── wsgi.py  # runserver命令就使用wsgiref模塊作簡單的web server

 

1 定義url在url.py文件裏面

from app01 import views
urlpatterns = [
    
    url(r'^login/', views.login),
]

2 而後去views裏面寫login函數(views.py)

 1 def login(request):
 2 
 3     if request.method=="POST":
 4         print(request.POST)
 5         username=request.POST.get("username","") #這裏的username必須和html裏面的name的值一致
 6         pwd=request.POST.get("password","")
 7         print(username,pwd)
 8         if username=="hu" and pwd=="123":
 9             return redirect("/index/")
10         else:
11             return HttpResponse("登陸失敗")
12     else:
13         return render(request,'login.html')

3 在templates目錄下面寫個login.html網頁,還要引入bootstrap等樣式

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>登陸頁面</title>
 6     <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css">
 7 </head>
 8 <body>
 9 <div class="container" style="margin-top: 80px">
10     <div class="row">
11     <form class="form-horizontal" action="login.html" method="post">
12       <div class="form-group">
13         <label for="inputEmail3" class="col-sm-2 col-sm-offset-2 control-label">用戶名</label>
14         <div class="col-sm-4" >
15           <input type="text" name="username" class="form-control" id="inputEmail3" placeholder="用戶名">
16         </div>
17       </div>
18       <div class="form-group">
19         <label for="inputPassword3" class="col-sm-2 col-sm-offset-2 control-label">密碼</label>
20         <div class="col-sm-4 ">
21           <input type="password" name="password" class="form-control" id="inputPassword3" placeholder="密碼">
22         </div>
23       </div>
24 
25       <div class="form-group">
26         <div class="col-sm-offset-5 col-sm-10">
27           <button type="submit" class="btn btn-default">登陸</button>
28         </div>
29       </div>
30     </form>
31     </div>
32 </div>
33 
34 </body>
35 </html>

 

4 要把bootstrap下載下來放到static目錄下,而且須要在settings.py裏面設置靜態文件目錄

STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]

5 在settings.py裏面要把 # 'django.middleware.csrf.CsrfViewMiddleware', 暫時註釋掉,不然不能提交

相關文章
相關標籤/搜索