暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Django实现后端接口

前端一起学 2021-06-06
1678

新建项目

建项目之前先下载专业版PyCharm,专门写python的,的确比vscode好用。

新建选择Django项目,确定项目存放路径和使用的python版本。

More Setting中设置Application,django中把每个功能模块划分为一个应用。

目录结构

自动生成的项目目录结构会有一个项目同名的文件夹和一个应用名的文件夹。

这里稍微修改一下,新建一个apps的文件夹,把刚刚的应用文件夹放进去,以后这里就专门放这个项目要实现的各个模块;新建一个extra_apps文件夹用于存放第三方引用的包。

在PyCharm中移动文件夹,相关的文件引用也会自动修改,settings.py中login的引用地址就被修改了。

还有个需要手动修改的地方就是urls.py中,新增一个path,这就是login接口的访问地址。

链接mysql数据库

1、settings.py中设置链接本地mysql,当然首先本地得有mysql,还得知道mysql的用户名密码。

settings中搜索DATABASES,默认的话应该是如下这个样子:

修改:

DATABASES = {
    'default': {
        'ENGINE''django.db.backends.mysql',
        'NAME''test',
        'USER''root',
        'PASSWORD''root',
        'HOST''127.0.0.1',
    }
}

2、安装mysql驱动

浏览器访问 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 全局搜索mysqlcl,根据使用的python版本下载对应的版本。

下载到本地,下载路径下进入cmd,执行pip install 文件名

这个输入文件名只需要写个开头字母按tab就能自动匹配上。

3、根据业务新建表结构。

菜单栏Tools里选中Run manage.py Task打开一个控制台界面。

输入makemigrations

输入migrate

4、新建表

应用文件对应要实现的功能模块,可以在models.py写新建表的逻辑。

例如login这个登录的应用模块,就需要在数据库中新建一个users的表,存放登录的用户信息。

from django.db import models

class Login(models.Model):
    userName = models.CharField(max_length=20, verbose_name="用户名", primary_key=True)
    password = models.CharField(max_length=20, verbose_name="密码")
    token = models.TextField(verbose_name="token")

    class Meta:
        verbose_name = "登录用户信息"
        verbose_name_plural = verbose_name
        db_table = "users"

之后再执行一次makemigrations 和 migrate

进入数据库中可以查看到的确是新增了。

写接口

login的后端逻辑,简单点就是把用户在登录界面输入用户名和密码,不存在时候存入到数据库,存在时候校验密码。

这些逻辑写在views.py中。

from django.http import JsonResponse
from apps.login.models import Login
from django.core import serializers
from django.views.decorators.csrf import csrf_exempt
import json

@csrf_exempt
def login(request):
    try:
        if request.method == "POST":
            data = json.loads(request.body)
            name = data.get("userName")
            return JsonResponse({
                "code": 0,
                "data": name,
            })
    except Exception as e:
        return JsonResponse({
            "code": 1,
            "msg""获取失败",
        })

以上代码就是个demo,用户在用户名输入框中输入的值,点击调用接口之后将输入的值返回。其实这就是后端获取前端值的写法。

不要问为什么这样写,问就是不知道。

跨域问题

本地测试一定会遇到这个问题的,因为前端启的vue项目端口和后端项目监听的端口不一样,前端访问后端就会有跨域的问题。

解决方案有前端和后端两种,之前用node写后端时候试过前端解决跨域问题,这次django项目就从后端实现。

这也是我网上找的办法。

settings中找到MIDDLEWARE,添加如下语句,注意顺序

CORS_ORIGIN_ALLOW_ALL = True

ALLOWED_HOSTS = ['127.0.0.1']


文章转载自前端一起学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论