框架分類
a. 接收瀏覽器發送的消息
b. 根據不同的路徑返回不同的內容
c. 通過字符串替換 實現 動態網頁
Python Web框架分類:
- 框架自帶 a,b,c Tornado
- 框架自帶b,c 使用第三方a Django
- 框架自帶b,使用第三方的a和c Flask
另外一個維度的分類:
- Django --> 大而全
- 其他
Django安裝
- 安裝
pip install django==1.11.9
-
新建Django項目
- django-admin startproject 項目名
-
Django 設置 settings.py文件中
- 註釋掉 csrf相關的那一行(大概是46行!)
- 配置html文件相關
- 配置靜態文件相關 /static/
-
基礎必備的三件套
- HttpResponse --> 字符串
- render() --> HTML文件 --> 打開HTML文件並且完成字符串的替換
- redirect(“/book_list/”) --> 跳轉
- HTML頁面中form表單提交數據三個要點:
- input一定要放在form表單裏面,並且 input 要有name屬性
- form表單裏面觸發提交操作 一定要有submit按鈕!!! <input type="submit" value="提交">
- 要指定form表單提交的URL(action屬性) 並且指定提交的方法(method屬性)
{"email": "[email protected]", "pwd": "alexdsb"}
ORM
對象關係映射
類 ==> 數據表
屬性 ==> 字段
對象 ==> 數據行
Django中操作MySQL數據庫的準備工作
-
自己用SQL語句建個數據庫
create database s20;
-
告訴Django去哪兒連數據庫
在settings.py文件中設置:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 's20', 'HOST': "127.0.0.1", 'PORT': 3306, 'USER': "root", "PASSWORD": "123", } }
- MySQLdb、pymysql,告訴Django使用pymysql連接MySQL數據庫
project/init.py文件中:
import pymysql
pymysql.install_as_MySQLdb()
- 在app/models.py文件中,根據特定的語法 創建類
class Book(models.Model):
定義一個自增的ID主鍵
id = models.AutoField(primary_key=True)
定義一個最大長度爲32的varchar字段
title = models.CharField(max_length=32) - 執行兩個命令
- python manage.py makemigrations --> 用小本本記錄 app/models.py文件的任何改動
- python manage.py migrate --> 把上面的改動翻譯成SQL語句,然後去數據庫中執行
操作數據行
- 增
Book.objects.create(title="書名")
- 刪
models.Book.objects.get(id=2).delete()
- 改
obj = models.Book.objects.get(id=1)
obj.title = "番茄物語 第二版"
obj.save() --> 把改動同步到數據庫中!!! - 查
查單個:
obj = models.Book.objects.get(id=1)
查所有:
objs = models.Book.objects.all()
settings設置
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR指的就是你這個Django項目存放的路徑
'DIRS': [os.path.join(BASE_DIR, 'templates')]
告訴Django 模板文件到這個文件夾下找
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
os.path.join(BASE_DIR, "static99"), #可以設置多個地址
]
告訴Django靜態文件所在地(CSS,JS等文件)
其中STATIC_URL = '/static/'相當於別名,指向的是下面STATICFILES_DIRS中的地址,STATICFILES_DIRS中可以設置多個地址,Django會輪訓查找裏面的內容
這樣就可以把不同的靜態文件放在不同的目錄,在模板中引用時直接加上/static/這一個名字就可以了
示例:
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
<script src="/static/bootstrap/js/bootstrap.min.js"></script>
注意:
如果static目錄放在app中,那麼可以不寫STATICFILES_DIRS,Django會去每個項目裏找static目錄