django初步瞭解

學前瞭解

wsgiref模塊( web服務網關接口)

​ 1 socket代碼幫你封裝好了
​ 2 http數據自動幫你處理好了
​ 1.請求來的時候 幫你拆分http數據格式
​ 2.響應走的時候 有幫你封裝成了符合http數據格式的數據html

根據不一樣的功能拆封成不一樣的py文件

​ urls.py 路由與視圖函數對應關係
​ views.py 處理後端業務邏輯的視圖函數(視圖函數不僅僅只是函數 也能夠是類)
​ templates 專門存放html文件
​ 規律:只要你想加功能 只須要在urls.py中添加一條對應關係
​ 再去views.py寫一個視圖函數前端

動靜態網頁

​ 1.將後端獲取到的時間傳遞給前端頁面
​ 利用字符串的替換 實現數據傳遞
​ 2.將字典傳遞給前端頁面 而且能夠很方便的操做
​ 藉助於jinja2模塊實現模板的渲染
python

from jinja2 import Template
temp = Template(data)
res = temp.render(user={'name':'jason'})

​ 模板渲染:利用模板語法 實現後端傳遞數據給前端html頁面mysql

​ 模板語法書寫格式 就兩種
​ 變量相關:{{}}
​ 邏輯相關:{%%}web

HTTP協議

​ 超文本傳輸協議sql

​ 1.四大特性
​ 1.基於TCP/IP之上做用於應用層的協議
2.基於請求響應
​ 3.無狀態
​ cookie,session,token,...
4.無鏈接
​ 長鏈接 websocket數據庫

​ 2.數據格式
​ 請求格式
​ 請求首行(請求方式 協議版本)
​ 請求頭(一堆k:v鍵值對) 相似於開路先鋒 提早告知對方一些必要的信息
​ \r\ndjango

​ 請求體(get請求沒有請求體)bootstrap

​ 響應格式


​ 3.響應狀態碼
​ 1XX
​ 2XX
​ 3XX
​ 4XX
​ 5XX

​ 請求方式
​ get請求
​ 朝別人要數據(get請求沒有請求體,get請求也能夠攜帶參數)
post請求
​ 朝別人提交數據(用戶登陸)

django初步瞭解1

1.小白必會三板斧

from django.shortcuts import render,HttpResponse,redirect
        HttpResponse  # 返回字符串的

        render  # 返回html頁面

        redirect  # 重定向

2.靜態文件配置

靜態文件
    網站所用到的
        本身寫好js
        本身寫好css
        第三方的框架 bootstrap fontwesome sweetalert
    
一般狀況下 網站所用到的靜態文件資源 統一都放在static文件夾下
STATIC_URL = '/static/'  # 是訪問靜態資源的接口前綴
"""只要你想訪問靜態資源 你就必須以static開頭"""
# 手動配置靜態文件訪問資源
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'static1'),
    # os.path.join(BASE_DIR,'static2'),
]

接口前綴 動態解析
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
 form表單 action參數能夠寫的形式
        1.不寫 默認朝當前地址提交
        2.只寫後綴/index/
        3.寫全路徑
       
    form表單默認朝後端提交的方式 默認是get請求
        get請求攜帶參數的方式 是在url後面?
        url?username=admin&password=213213213213213
        缺點
            1.不安全
            2.get請求攜帶的參數有大小限制(最大不能超過4KB左右)
    
    前期你若是要提交post請求 你就去settings.py文件註釋掉一箇中間件
    MIDDLEWARE = [
            'django.middleware.security.SecurityMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.common.CommonMiddleware',
            # 'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
        ]

3.request對象及方法

先後端數據交互
        如何獲取請求方式
        
        獲取post請求攜帶的數據
            request.POST
           
        獲取get請求攜帶的數據
            request.GET
        get和post在後端獲取用戶數據的時候 規律是同樣的
        <QueryDict: {'username': ['admin', 'tank'], 'password': ['123']}>
        tank <class 'str'>
        123 <class 'str'>
        request.POST.get('username') 默認只取列列表的最後一個元素
        若是你想將列表完整的取出 你必須用getlist()

4.pycharm鏈接數據庫django鏈接數據庫

django鏈接MySQL
            第一步配置文件中配置
                DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql',  # 指定數據庫 MySQL postgreSQL
                        'NAME': 'day56',  # 到底使用哪一個庫
                        'USER':'root',
                        'PASSWORD':'root',
                        'HOST':'127.0.0.1', 
                        'PORT':3306,
                        'CHARSET':'utf8'
                    }
                }
    
            第二步 
                django默認使用的是mysqldb鏈接數據庫  可是該模塊不支持了
                因此你要告訴django不要用mysqldb該用pymysql鏈接
                
                你能夠在項目名下面的__init__.py也能夠在應用名下面的__init__.py文件中指定
                import pymysql
                pymysql.install_as_MySQLdb()

5.django orm簡介

orm對象關係映射
        
        類                   數據庫的表
        
        對象                  表的記錄
        
        對象獲取屬性          記錄的某個字段對應的值
        
        優勢:可以讓一個不會數據庫操做的人 也可以簡單快捷去使用數據庫
        
        缺點:因爲封裝程度過高 可能會致使程序的執行效率偏低
        有時候 結合項目需求 可能須要你手寫sql語句
        
        
    注意事項
        1.django的orm不會自動幫你建立庫,庫須要你本身手動建立
            表會自動幫你建立  你只須要書寫符合django orm語法的代碼便可
    
    去應用下所在的models.py中書寫類
    
    from django.db import models

    # Create your models here.
    class Userinfo(models.Model):
        # 設置id字段爲userinfo表的主鍵  id int primary key auto_increment
        id = models.AutoField(primary_key=True)  # 在django中 你能夠不指定主鍵字段 django orm會自動給你當前表新建一個名爲id的主鍵字段
        # 設置username字段  username varchar(64)  CharField必需要指定max_length參數
        username = models.CharField(max_length=64)  # 在django orm中 沒有char字段  可是django 暴露給用戶 能夠自定義char字段
        # 設置password字段  password int
        password = models.IntegerField()
    ******************************數據庫遷移(同步)命令***********************************    
    python manage.py makemigrations  # 不會建立表 僅僅是生成一個記錄  將你當前的操做記錄到一個小本本上(migrations文件夾)
    
    python manage.py migrate  # 將你的orm語句真正的遷移到(同步)到數據庫中
    
    
    只要你在models.py中修改了跟數據庫相關的代碼  你就必須從新開始執行上面兩條命令
相關文章
相關標籤/搜索