初識(shí)Django
Python下有許多款不同的 Web 框架,Django是重量級(jí)選手中最有代表性的一位碉纳,許多成功的網(wǎng)站和APP都基于Django勿负。Django采用了MVT的框架模式,即模型M劳曹,視圖V和模版T奴愉。它最初是被開(kāi)發(fā)來(lái)用于管理一些以新聞內(nèi)容為主的網(wǎng)站的痛侍,即是CMS(內(nèi)容管理系統(tǒng))軟件蜜宪。
Django的MTV模式
Model(模型):負(fù)責(zé)業(yè)務(wù)對(duì)象與數(shù)據(jù)庫(kù)的對(duì)象(ORM)
Template(模版):負(fù)責(zé)如何把頁(yè)面展示給用戶
View(視圖):負(fù)責(zé)業(yè)務(wù)邏輯,并在適當(dāng)?shù)臅r(shí)候調(diào)用Model和Template
?????? 此外耸序,Django還有一個(gè)urls分發(fā)器蜕劝,它的作用是將一個(gè)個(gè)URL的頁(yè)面請(qǐng)求分發(fā)給不同的view處理檀头,view再調(diào)用相應(yīng)的Model和Template。
1岖沛、安裝django
pip3 install django
2暑始、創(chuàng)建django工程
# 創(chuàng)建Django工程
django-admin startproject 工程名
# 運(yùn)行Django功能
python manage.py runserver 127.0.0.1:8001
#創(chuàng)建app
python manage.py startapp app名
3、配置模板路徑
project.settings里(用pycharm創(chuàng)建默認(rèn)就是templates)
TEMPLATES = [
? ? ? ? {
? ? ? ? ? 'BACKEND': 'django.template.backends.django.DjangoTemplates',
? ? ? ? ? 'DIRS': [os.path.join(BASE_DIR, 'templates')],
? ? ? ? ? 'APP_DIRS': True,
? ? ? ? ? 'OPTIONS': {
? ? ? ? ? ? 'context_processors': [
? ? ? ? ? ? ? 'django.template.context_processors.debug',
? ? ? ? ? ? ? 'django.template.context_processors.request',
? ? ? ? ? ? ? 'django.contrib.auth.context_processors.auth',
? ? ? ? ? ? ? 'django.contrib.messages.context_processors.messages',
? ? ? ? ? ? ],
? ? ? ? ? },
? ? ? ? },
? ? ? ]
4婴削、靜態(tài)目錄的配置
project.settings里
STATIC_URL = '/static/'
STATICFILES_DIRS = (
? os.path.join(BASE_DIR,"static"),
)
5廊镜、注冊(cè)app
INSTALLED_APPS = [
? ? ? 'django.contrib.admin',
? ? ? 'django.contrib.auth',
? ? ? 'django.contrib.contenttypes',
? ? ? 'django.contrib.sessions',
? ? ? 'django.contrib.messages',
? ? ? 'django.contrib.staticfiles',
? ? ? 'app01',
? ? ]
6、創(chuàng)建數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)的創(chuàng)建:
project.app.models里
from django.db import models
# app01_userinfo
class UserInfo(models.Model):
? ? # id列唉俗,自增嗤朴,主鍵
? ? # 用戶名列,字符串類型虫溜,指定長(zhǎng)度
? ? username = models.CharField(max_length=32)
? ? password = models.CharField(max_length=64)
7雹姊、執(zhí)行命令
python manage.py makemigrations
python manage.py migrate
8、運(yùn)行應(yīng)用
進(jìn)入項(xiàng)目所在目錄
python manage.py runserver 8000
Django使用數(shù)據(jù)庫(kù)
Django接默使用SQLite3衡楞,打開(kāi)setting.py可以看到數(shù)據(jù)庫(kù)部分的配置如下:
DATABASES = {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? 'default': {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? 'ENGINE': 'django.db.backends.sqlite3',? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),? ? ? ? ? ? ? ? ? ? ? ? ?
? ? }? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}?
Django使用MySQL數(shù)據(jù)庫(kù)
1容为、修改為pymysql,在project同名文件夾下的__init__文件中添加如下代碼即可:
import pymysql
pymysql.install_as_MySQLdb()
2、django連接MySQL需要pymysql模塊:
pip install pymysql
3 更改項(xiàng)目setting.py中對(duì)數(shù)據(jù)庫(kù)的配置為:
DATABASES = {
? ? 'default': {
? ? ? ? 'ENGINE': 'django.db.backends.mysql',
? ? ? ? 'NAME': 'test',
? ? ? ? 'USER': 'username',
? ? ? ? 'PASSWORD': 'passwd',
? ? ? ? 'HOST': 'localhost',
? ? ? ? 'PORT': '3306'
? ? }
}
4 最后通過(guò)python manage.py migrate命令坎背,Django會(huì)在數(shù)據(jù)庫(kù)中自動(dòng)創(chuàng)建相應(yīng)的表替劈。