一旨涝、環(huán)境準(zhǔn)備
1. Python
2. Django
通過命令:pip install django
即可安裝最新版本的Django县貌。
如果速度太慢可切換為國內(nèi)鏡像下載:pip install django -i http://mirrors.aliyun.com/pypi/simple
升薯。
3. MySQL
二膏秫、構(gòu)建Django項目
1. 新建Django項目
新建一個名稱為 djangoDemo 的項目喘落。
django-admin.py startproject djangoDemo
2. 創(chuàng)建app
進(jìn)入項目根目錄规伐,創(chuàng)建一個名稱為 myapp 的app蟹倾。
python manage.py startapp myapp
目錄結(jié)構(gòu):
3. 數(shù)據(jù)庫信息關(guān)聯(lián)配置
打開 djangoDemo 目錄下的 settings.py 配置文件,把默認(rèn)的sqllite3數(shù)據(jù)庫換成我們的MySQL數(shù)據(jù)庫:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 數(shù)據(jù)庫引擎
'NAME': 'djangoDB', # 數(shù)據(jù)庫名稱
'USER': 'root', # 用戶名
'PASSWORD': '123456', # 密碼
'HOST': '127.0.0.1', # 主機(jī)IP地址
'PORT': '3306' # 默認(rèn)端口
}
}
并把a(bǔ)pp加入到INSTALLED_APPS
列表里:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp' # 加入app
]
4. 修改 myapp 文件夾中的 models.py
from django.db import models
# Create your models here.
class Person(models.Model):
person_name = models.CharField('姓名', max_length=64, null=False)
deposit = models.FloatField('存款')
add_time = models.DateTimeField(auto_now_add=True)
isDelete = models.BooleanField(default=False)
def __str__(self):
return self.person_name, self.deposit
只有四個字段猖闪,人名person_name
鲜棠、存款deposit
、添加時間add_time
以及刪除標(biāo)識isDelete
培慌。如果沒有指定主鍵的話django會自動新增一個自增id作為主鍵豁陆。
5. 添加接口
在 myapp 目錄下的 views.py
里我們新增兩個接口:
① add_person:接受一個get請求,往數(shù)據(jù)庫里添加一條person數(shù)據(jù)吵护;
② show_persons:返回所有的人物列表(通過JsonResponse返回能被前端識別的json格式數(shù)據(jù))盒音。
from django.shortcuts import render
from django.views.decorators.http import require_http_methods
from django.core import serializers
from django.http import JsonResponse
import json
from .models import Person
# Create your views here.
@require_http_methods(["GET"])
def add_person(request):
response = {}
try:
person = Person(
person_name=request.GET.get('person_name'),
deposit=request.GET.get('deposit')
)
person.save()
response['msg'] = 'success'
response['error_num'] = 0
except Exception as e:
response['msg'] = str(e)
response['error_num'] = 1
return JsonResponse(response)
@require_http_methods(["GET"])
def show_persons(request):
response = {}
try:
persons = Person.objects.filter()
response['list'] = json.loads(serializers.serialize("json", persons))
response['msg'] = 'success'
response['error_num'] = 0
except Exception as e:
response['msg'] = str(e)
response['error_num'] = 1
return JsonResponse(response)
6. 路由關(guān)聯(lián)
① 在 myapp 目錄下,新增一個 urls.py
文件馅而,把我們新增的兩個接口添加到路由里:
from django.conf.urls import url, include
from myapp import views
urlpatterns = [
url(r'add_person$', views.add_person, ),
url(r'show_persons$', views.show_persons, ),
]
② 我們還要把 myapp 下的 urls.py
添加到 djangoDemo 下的 urls.py
中里逆,才能完成路由關(guān)聯(lián)。
from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include
import myapp.urls
urlpatterns = [
path('admin/', admin.site.urls),
# url(r'^api/', include(myapp.urls)),
url(r'^', include(myapp.urls)),
]
7. 同步所有數(shù)據(jù)表
進(jìn)入項目根目錄用爪,同步數(shù)據(jù)表
# 進(jìn)入包含有 manage.py 的文件夾
python manage.py makemigrations
python manage.py migrate
在這里,Python3.* 如未安裝MySQLdb模塊胁镐,會出現(xiàn)報錯偎血。
解決辦法請看:踩坑心得——Python3.* 報錯“ImportError: No module named ‘MySQLdb'”
8. 啟動服務(wù)
在項目的根目錄,輸入命令:
python manage.py runserver
啟動服務(wù)盯漂,通過postman測試一下我們剛才寫的兩個接口:
① add_person:
刷新數(shù)據(jù)庫颇玷,發(fā)現(xiàn)數(shù)據(jù)已新增存儲:
② show_persons:
至此,新增以及查詢的后端API接口已完成就缆。
本地Django項目部署至服務(wù)器的詳細(xì)步驟請見:項目實戰(zhàn)——本地Django項目(后端)部署至騰訊云服務(wù)器/CentOS 7