用pycharm搭建django框架来接收微信小程序的图片

用pycharm搭建django框架来接收微信小程序的图片

上一篇:微信云开发实现每个用户在云端上传并且下载自己对应的图片

链接: https://blog.csdn.net/qq_44933075/article/details/107735724.

四、搭建Django环境

4.1更改pip的镜像源

由于我们在djamgo工程中用到的第三方库比较多,用自带的国外源会因为网络波动啊,下载东西不成功,所以把pip源换成国内的源下载速度就很快了 具体操作步骤如下

1.打开我的电脑在上方的路径上查找 %HOMEPATH%
2.然后新建文件夹pip
用pycharm搭建django框架来接收微信小程序的图片_第1张图片
3.在pip文件夹里新建pip.ini文件右击记事本打开
4.右击记事本打开 写入

[global]
index-url =  http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com

用pycharm搭建django框架来接收微信小程序的图片_第2张图片
这里我们用的阿里的镜像源也可以更改其他的国内镜像,不推荐豆瓣源,bug比较多。

4.2安装虚拟环境

安装虚拟环境很有必要的它可以防止多个项目进行互串,而且把主机和虚拟环境有些分开来方便管理
第一步、先自己在任意地方建一个文件夹virtualenv,路径位置要自己记住接着打开win+r 输入cmd打开管理器界面
用pycharm搭建django框架来接收微信小程序的图片_第3张图片
第二步、cd到刚刚创建virtualenv文件夹的路径我的是这样的

cd G:\code\virtualenv
用pycharm搭建django框架来接收微信小程序的图片_第4张图片
第三步 安装虚拟环境库virtualenv
pip install virtualenv
如果下载速度很慢就回头看1.1更改pip镜像源
用pycharm搭建django框架来接收微信小程序的图片_第5张图片
安装完成后 创建一个虚拟环境的文件名称l_env(自定义名称) 输入命令
python -m venv l_env
用pycharm搭建django框架来接收微信小程序的图片_第6张图片
这时我们的virtualenv文件件就生成了一个l_env文件夹,里面会是这样的

用pycharm搭建django框架来接收微信小程序的图片_第7张图片
最后一步、激活环境 cd到virtualenv文件l_env下的scripts文件夹下 输入关键字
activate
用pycharm搭建django框架来接收微信小程序的图片_第8张图片
为了方便可以把virtualenv文件l_env下的scripts文件夹设为环境变量

4.3安装django框架

第一步、打开cdm输入命令

pip install dijango

pip install django为默认最新的版本,如果失败了也可以指定版本,由于我们用了国内源所以速度很快,如果下载速度很慢就回头看1.1更改pip镜像源
用pycharm搭建django框架来接收微信小程序的图片_第9张图片
指定版本安装

pip install django==版本号

如果装错了就卸载一下再安装:

pip uninstall django==版本号

然后找到自己电脑python的安装路径 ,可以右击python程序属性,打开文件所在地找到对应的路径

用pycharm搭建django框架来接收微信小程序的图片_第10张图片
用pycharm搭建django框架来接收微信小程序的图片_第11张图片

再找到 Lib\site-packages\django\bin,我们在site-packages文件下看到djano文件夹说明已经安装成功了
用pycharm搭建django框架来接收微信小程序的图片_第12张图片
第二步、将 python路径\Lib\site-packages\django\bin 设为环境变量,我的路径为
C:\Users\ASUS\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\django\bin

以win10为例子,先新建以理解名字叫 django
用pycharm搭建django框架来接收微信小程序的图片_第13张图片
再打开编辑path路径 选择新建 输入%django%
用pycharm搭建django框架来接收微信小程序的图片_第14张图片

设置完后打开cmd
输入 django-admin.py
在这里插入图片描述
用pycharm搭建django框架来接收微信小程序的图片_第15张图片
django就设置成功了

4.4配置数据库

这时候我们打开pycharm 软件新建new project选django

用pycharm搭建django框架来接收微信小程序的图片_第16张图片
这里的路径选我们自己创建的虚拟环境,选择在新建django项目的时候就会默认在这个文件夹下
用pycharm搭建django框架来接收微信小程序的图片_第17张图片
最后点击创建
用pycharm搭建django框架来接收微信小程序的图片_第18张图片
因为要安装很多东西时间比较长,所以我们慢慢等待
用pycharm搭建django框架来接收微信小程序的图片_第19张图片
最后显示这样表示成功了,因为网络问题后面会加载出一个
用pycharm搭建django框架来接收微信小程序的图片_第20张图片
这时候打开用pycharm搭建django框架来接收微信小程序的图片_第21张图片
搜索sqlparse第三方库进行安装
用pycharm搭建django框架来接收微信小程序的图片_第22张图片
回到我们项目里打开底部的terminal里输入python或者python3看看哪个能不能检测出来,我的是python检测出来创建命令就用python就好了(前提是你之前装的python已经设为环境变量,)用pycharm搭建django框架来接收微信小程序的图片_第23张图片
这时候不能输入命令,因为检测完python后默认到python里了无法操作本django的命令,所以要关闭再次打开local,保证前缀为不空为虚拟环境的路径输入

python manage.py migrate

用pycharm搭建django框架来接收微信小程序的图片_第24张图片

如何报错这个错的话,是所没有导入os点击报错的蓝色字体进入57行

用pycharm搭建django框架来接收微信小程序的图片_第25张图片
光标点到os上 按键盘alt+enter(回车键) 会出来import os 点击确认就好了,同理其他报错时 可以按alt+enter来调出系统的解决方案
用pycharm搭建django框架来接收微信小程序的图片_第26张图片

这时候我们再 输入 python manage.py migrate,系统的数据库就安装好了
用pycharm搭建django框架来接收微信小程序的图片_第27张图片
我们项目管理器的就会出现db.sqlite3,数据库就创建成功了用pycharm搭建django框架来接收微信小程序的图片_第28张图片

4.5启用djano服务

这时候我们要启动服务 ,manage.py时django的主入口 127.0.0.1为本地的路径,:8000为端口 端口可以自定义默认为8000

 python manage.py runserver 127.0.0.1:8000

用pycharm搭建django框架来接收微信小程序的图片_第29张图片
点击蓝色的地址会跳转到django页面,用pycharm搭建django框架来接收微信小程序的图片_第30张图片
同理打开自己浏览器也输入127.0.0.1:8000 也会跳出django页面
用pycharm搭建django框架来接收微信小程序的图片_第31张图片
为了方便下次使用我们要在run菜单下选edit configurations用pycharm搭建django框架来接收微信小程序的图片_第32张图片
在parameters里输入runserver 127.0.0.1:8000,则下次运行就会进入本地路径了
用pycharm搭建django框架来接收微信小程序的图片_第33张图片
这样一个基础的django就创建好了

五、配置django框架

5.1配置app

我自己又新建了s1工程 之后发现,默认就是我们上一次选的虚拟环境了,同样的,我们创建的第二个虚拟环境会迭代使用第一次的虚拟环境里的库,但两个是分开的个体,这也是虚拟环境的好处。同样的,每当我们建造新的djano项目的时候,只用进行runserver进行启用服务就可以了
用pycharm搭建django框架来接收微信小程序的图片_第34张图片

输入 “python.manage.py startapp app1” 其中app1为名字可以自定义
用pycharm搭建django框架来接收微信小程序的图片_第35张图片
工程管理器出现了app1文件夹,里面有很多配置文件,urls为自己新建的py文件后续会用到
用pycharm搭建django框架来接收微信小程序的图片_第36张图片
同时要去s1的seting里INSTALLED_APPS里注册app不然无法使用的用pycharm搭建django框架来接收微信小程序的图片_第37张图片

5.2配置templates模板

在安装的过程中有时会出现templates模板没有导入的出现的情况
就要在项目根目录下创建文件夹templates与manage.py同级
用pycharm搭建django框架来接收微信小程序的图片_第38张图片
也要去set里添加路径 , 在‘DIRS’:[] 中加入
os.path.join(BASE_DIR, ‘templates’) ,
BASE_DIR为当前工程路径
用pycharm搭建django框架来接收微信小程序的图片_第39张图片

5.3了解django模式

用pycharm搭建django框架来接收微信小程序的图片_第40张图片
Django是MTV模式,为了各组件之间保持松耦合关系。
Model(模型):负责业务对象与数据库的对象(ORM)-------M
Template(模版):负责如何把页面展示给用户--------T
View(视图):负责业务逻辑,并在适当的时候调用Model和Template-------V
Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template(模板)

接下来我们看一下对应的文件各有什么功能,这是我在网上找到一直说明比较详细的的图片
用pycharm搭建django框架来接收微信小程序的图片_第41张图片

六、django与小程序建立请求

整体思路是小程序通过发送请求到本地127.0.0.1:8000然后django获取请求,将图片保存到本地

6.1小程序和django设置

中间经过了很漫长的尝试,如果要让django接收小程序的照片,要设置一些地方不然是无法成功的。
在django端
在djaingo的seting的AllOWED_HOSTS中添加 ’*‘ 意思这个是服务器绑定的地址要设为任意,不然无法接收
在这里插入图片描述
另外还有注释掉seting里的MIDDLEWARE里的这句话#‘django.middleware.csrf.CsrfViewMiddleware’,
这句话就类似于两边通信需要的密钥,是django的保护机制
用pycharm搭建django框架来接收微信小程序的图片_第42张图片
小程序端 在开发着工具里有个本地测试,把不校验合法域名勾选是。这个是小程序访问的域名检测,如果要发布上线的话,需要去小程序网页端指定域名发布,这里先关掉,不然无法访问本地
用pycharm搭建django框架来接收微信小程序的图片_第43张图片

6.2小程序上传照片django框架(代码)

小程序端
在chooseimage接口函数调用成功的里面加入 wx.uploadFile({})接口,
带上opid 操作类型 编码等参数向目标网站发送请求数据

wx.chooseImage({
          count: 1,
          sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
          sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
          success: function (res) {
              // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
              const tempFilePaths=res.tempFilePaths
              console.log(tempFilePaths)
              console.log(that.data.openid)
              wx.uploadFile({
                filePath:tempFilePaths[0],  //文件路径
                name: 'image',
                url: 'http://127.0.0.1:8000/get_image',  //访问的页面路径
                method:'POST',  //操作的类型
                header:{
                  'content-type':'application/x-www-form-urlencoded'   //浏览器默认编码格式
                },
                formData:{
                  openid:that.data.openid    //附加信息有opid
                },

django端的views.py,判断是否有POST请求,如果有请求就用opid变量来存储传来过来的opid作为文件名,把请求过来的图片编码的二进制写入到本地磁盘下

def get_image(request):
    if request.method == "POST":
        image=request.FILES['image']
        print(image)
        open_id=request.POST.get('openid')

        basedir= os.path.dirname(__file__)  #获取当前路径的上一级 极为s1
        path=basedir+'/static/image/'
        if not os.path.exists(path+open_id+'.jpg'):  #如何不为空
            with open(path+open_id+'.jpg','wb')as f:  #转为二进制写入
                f.write(image.read())
                f.closed
                return  HttpResponse('上传成功')
        else:
            return HttpResponse('上传失败')

当从小程序端上传图片的时候 这时候django后台就接收到了小程序传了图片
用pycharm搭建django框架来接收微信小程序的图片_第44张图片
用pycharm搭建django框架来接收微信小程序的图片_第45张图片
下一篇 :小程序接收django处理完的图片
链接: https://blog.csdn.net/qq_44933075/article/details/108064797.

你可能感兴趣的:(django,微信小程序,http交互,python,django,小程序)