目錄css
1 socket代碼幫你封裝好了
2 http數據自動幫你處理好了
1.請求來的時候 幫你拆分http數據格式
2.響應走的時候 有幫你封裝成了符合http數據格式的數據html
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
超文本傳輸協議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請求
朝別人提交數據(用戶登陸)
from django.shortcuts import render,HttpResponse,redirect HttpResponse # 返回字符串的 render # 返回html頁面 redirect # 重定向
靜態文件 網站所用到的 本身寫好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', ]
先後端數據交互 如何獲取請求方式 獲取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()
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中修改了跟數據庫相關的代碼 你就必須從新開始執行上面兩條命令