一、创建项目
二、设置setting.py
1.配置数据库
1.1找到DATABASES配置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': '', # 数据库名
'USER': '', # 账户名
'PASSWORD': '', # 密码
'HOST': '', # 主机
'PORT': '', # 端口
}
}
1.2安装mysql包
pip install pymysql
1.3在setting.py所在目录的init.py添加如下代码
import pymysql
pymysql.install_as_MySQLdb()
1.4执行数据库迁移命令
python manage.py makemigrations
python manage.py migrate
2.找到TIME_ZONE设置时区
TIME_ZONE = 'Asia/Shanghai'
3.找到STATIC_URL配置jQuery加载路径
3.1在项目根目录下创建static目录,将jQuery包放在该目录下
3.2在setting.py中配置静态文件目录
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(os.path.dirname(__file__), '..', 'static').replace('\\', '/'),
os.path.join('../static'),
]
三、创建应用
1.执行命令,创建应用
python manage.py startapp register
创建后的目录
四、实现post接口的前后端分离-注册功能
1.定义模型
1.1在models.py文件中编写如下代码,
from django.db import models
# Create your models here.
#应用名_类名为数据库中表名
class UserInfo(models.Model):
#变量名为数据库中字段名
username = models.CharField(max_length=16)
password = models.CharField(max_length=20)
def __str__(self):
return self.username
2.激活模型
2.1 在setting.py的INSTALLED_APPS添加设置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#register为创建的应用名称,RegisterConfig为app.py中的类名
'register.apps.RegisterConfig',#这里
]
2.2 迁移数据,分别执行如下三行命令
注意:执行第二条命令时,可能会报错,具体解决办法参考:https://blog.csdn.net/lijing742180/article/details/91966031
#检测模型文件的修改,并把修改的部分存储为一次迁移。register为应用名称
python manage.py makemigrations register
#查看迁移命令执行哪些SQL
python manage.py sqlmigrate register 0001
#执行迁移
python manage.py migrate
2.3 迁移数据后,数据库中生成模型中定义的表,register_userinfo1为定义的模型创建的表
3.实现post请求
3.1编写view视图,在views.py中编写如下代码
from django.shortcuts import render_to_response
from django.http import JsonResponse
def registerPage(request):
return render_to_response("register.html")
from django.views.decorators.csrf import csrf_exempt
import json
from .models import UserInfo
@csrf_exempt #屏蔽装饰器器
def registerApi(request):
if request.method == 'POST':
print(request.body)
req = json.loads(request.body) #取得数据
userID = req['userID']
pwd = req['pwd']
searchArray = UserInfo.objects.get_or_create(username=userID) #尝试创建用户
print(searchArray)
if searchArray[1] == True:
return JsonResponse({'result': 200, 'msg':'注册成功'})
else:
return JsonResponse({'result': 200, 'msg':'已有重复用户名'})
3.2 在register目录下新建urls.py,编写如下代码
from django.urls import path
from . import views
urlpatterns = [
path("helloApi", views.hello, name='hello'),
path("registerPage", views.registerPage, name='registerPage'),
path("registerApi", views.registerApi, name='registerApi')
]
3.3 在项目路径下urls.py新增如下代码
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("register/", include("register.urls")),#新增
path('admin/', admin.site.urls),
]
3.4在templates目录下新增register.html文件,编写如下代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>POST-test</title>
<script type='text/javascript' src="/static/jquery-1.12.4.js"></script>
<script>
$(function () {
var subBt = document.getElementsByTagName("button")[0];
subBt.onclick = function () {
var userID = document.getElementsByTagName('input')[0].value;
var pwd = document.getElementsByTagName('input')[1].value;
console.log(pwd);
console.log(userID);
var xhrRegister = new XMLHttpRequest();
ajaxResponse(xhrRegister,
function () {
var respones = JSON.parse(xhrRegister.responseText);
alert(respones.msg);
},
function () {
});
var user = {
userID:userID,
pwd:pwd
};
xhrRegister.open('post', 'http://127.0.0.1:8000/register/registerApi');
xhrRegister.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=utf-8');
xhrRegister.send(JSON.stringify(user));
};
});
function ajaxResponse(xhr,successFunction,falseFunction) {
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
alert("成功");
successFunction();
} else {
alert("失败" + xhr.status);
falseFunction();
}
}
}
}
</script>
</head>
<body>
<p>账号:</p><input type="text" id="userID">
<p>密码:</p><input type="password" id="pwd">
<button id="submit">注册</button>
</body>
</html>
五、运行服务,实现前后端分离
1.运行命令,启动django服务
python manage.py runserver
2.在浏览器输入http://127.0.0.1:8000/register/registerPage,注册账号