虚拟环境搭建

安装软件

sudo apt-get install virtualenv sudo apt-get install virtualenvwrapper

sudu apt update

Django环境搭建 - 图19

sudo apt install virtualenv

Django环境搭建 - 图20

sudo apt install virtualenvwrapper

Django环境搭建 - 图21

source virtualenvwrapper.sh

Django环境搭建 - 图22

添加变量

vi .bashrc
Django环境搭建 - 图23

首先确定是否安装了vim,没有则安装,有则更新 sudo apt-get install vim #打开.bahsrc 将代码添加到最后一行 sudo vi ~/.bashrc #将下面的内容添加到最后一行,添加完成后重新打开终端 source /usr/share/virtualenvwrapper/virtualenvwrapper.sh #退出保存,vim 底行模式:x #刷新环境 source ~/.bashrc #测试是否正常,输入work 按两下tab键会发现自动补全workon即可,如果没有出现请重复上面的内容 workon
Django环境搭建 - 图24
Django环境搭建 - 图25

创建项目

创建虚拟环境:mkvirtualenv「项目名字」 #删除虚拟环境:rmvirtualenv 「项目名字」 #进入虚拟环境:workon 「项目名字」 #退出虚拟环境:deavtivate
mkvirtualenv mqtt_server
Django环境搭建 - 图26

进入项目文件夹

Django环境搭建 - 图27

切换项目

cd ..
cd ~
python -v 查看版本
Django环境搭建 - 图28

删除虚拟环境

deactivate 退出虚拟环境
rmvirtualenv mqtt_server 删除项目
Django环境搭建 - 图29

安装Django

pip相关命令 #显示当前包名:pip list #显示扩展包名:pip freeze #安装包:pip install 包名 #安装包:pip install 包名==版本号 #修改软件源 :pip install Django==2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple Django==2.2 #删除包:pip uninstall 包名
pip list 查看python安装库版本
pip install django==2.2 不要高于这个版本
Django环境搭建 - 图30

环境影响安装指定版本

进如python解释器执行如下代码 >>> import django >>> django.get_version() ‘2.2’ >>> >>> exit()

pip 国内源

pip 国内源: 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣 http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/ 然后输入如下命令 包名 指定源 pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install django==2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple Django==2.2
Django环境搭建 - 图31

安装pymysql

pip install pymysql
Django环境搭建 - 图32

确认安装成功

Django环境搭建 - 图33

创建Django工程

前言:执行之前必须对Django有些了解,了解它的M(模型)V(视图)T(模板)的模式,对于我们开发WEB,每一种功能或者说每一个网页分别都对应一个APP要有一些概念,更深入的了解请在视频中查看。

创建工程命令

在虚拟环境下执行
django-admin startproject 项目名称
#创建完成后,当前目录下会产生对应得一个目录,可以看到如下内容:
#这是Django给我们提供的一个基础配置,我们可以根据不同的需求去修改不同的文件
#对于修改Python文件来说,PycharmIDE是少不了的,下面继续安装Pycharm工具(河蟹版)
Django环境搭建 - 图34
Django环境搭建 - 图35

IDE-PyCharm

Download-pycharm

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。 集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。 如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。 IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。 集成开发环境(IDE)是一种用于构建应用程序的软件,可将常用的开发人员工具合并到单个图形用户界面(GUI)中。 源代码编辑器:一个旨在帮助开发人员轻松编写软件代码的文本编辑器,特色功能包括:视觉提示突出显示语法、特定编程语言的自动补全功能、检查正在编写的代码是否存在错误。 本地构建版本自动化:这些实用工具可以在创建软件的本地构建版本时自动执行简单的可重复任务,如将计算机源代码编译成二进制代码、封装二进制代码、运行自动测试。 调试器:一个用于测试其他程序的程序,它能以图形方式显示原始代码中的错误位置。
链接:https://pan.baidu.com/s/1ind573d4O5I1ANsw7h44wg
提取码:9yl0
Django环境搭建 - 图36
Django环境搭建 - 图37
Django环境搭建 - 图38
Django环境搭建 - 图39
Django环境搭建 - 图40
Django环境搭建 - 图41
Django环境搭建 - 图42
Django环境搭建 - 图43
Django环境搭建 - 图44
Django环境搭建 - 图45
Django环境搭建 - 图46
Django环境搭建 - 图47

解码

ThisCrackLicenseId-{ “licenseId”:”11011”, “licenseeName”:”WeChat”, “assigneeName”:”IT—Pig”, “assigneeEmail”:”1113449881@qq.com”, “licenseRestriction”:””, “checkConcurrentUse”:false, “products”:[ {“code”:”II”,”paidUpTo”:”2099-12-31”}, {“code”:”DM”,”paidUpTo”:”2099-12-31”}, {“code”:”AC”,”paidUpTo”:”2099-12-31”}, {“code”:”RS0”,”paidUpTo”:”2099-12-31”}, {“code”:”WS”,”paidUpTo”:”2099-12-31”}, {“code”:”DPN”,”paidUpTo”:”2099-12-31”}, {“code”:”RC”,”paidUpTo”:”2099-12-31”}, {“code”:”PS”,”paidUpTo”:”2099-12-31”}, {“code”:”DC”,”paidUpTo”:”2099-12-31”}, {“code”:”RM”,”paidUpTo”:”2099-12-31”}, {“code”:”CL”,”paidUpTo”:”2099-12-31”}, {“code”:”PC”,”paidUpTo”:”2099-12-31”} ], “hash”:”2911276/0”, “gracePeriodDays”:7, “autoProlongated”:false}

Django环境搭建 - 图48

Django环境搭建 - 图49

打开工程

Django环境搭建 - 图50
Django环境搭建 - 图51
Django环境搭建 - 图52

设置字体

打开setting

Django环境搭建 - 图53

配置字体

Django环境搭建 - 图54

配置数据库

Django环境搭建 - 图55

配置数据库

Django环境搭建 - 图56

创建应用

Django环境搭建 - 图57

index

Django环境搭建 - 图58
Django环境搭建 - 图59

打开PyCharm

关闭提示

Django环境搭建 - 图60

打开文件夹

Django环境搭建 - 图61

找到mqtt_server

Django环境搭建 - 图62

当前窗口即可

Django环境搭建 - 图63

更改数据库

nmap 127.0.0.1

Django环境搭建 - 图64
Django环境搭建 - 图65

创建应用

进入工程文件夹,运行:python manage.py startapp 「应用名字」
Django环境搭建 - 图66

注:安装mysqlclient失败解决办法

首先确定安装pythond开发包 sudo apt-get install python3-dev #进入虚拟环境安装mysqlclient,使用豆瓣源 pip install mysqlclient -i http://pypi.douban.com/simple/ —trusted-host pypi.douban.com
Django环境搭建 - 图67

测试搭建是否成功

进入虚拟环境 zhaolc@zhaolc-virtual-machine:~/demo$ workon myenv #运行服务器 (myenv) zhaolc@zhaolc-virtual-machine:~/demo$ python manage.py runserver
Django环境搭建 - 图68
浏览器出现以上内容代表搭建成功,如果失败请重复上面的内容。
初步验证已经实现了,下一步就要去定制Django了,通过修改源码和创建app的形式完成我们想要的功能。

进入models.py

创建表参照数据库,自动生成表。
Django环境搭建 - 图69

表配置Info

Django环境搭建 - 图70

进入settings.py

配置APP

  • 服务器成功后,需要将写好的app注册进去,操作如下:

Django环境搭建 - 图71

生成迁移

生成MySQL语句,创建表的过程。
python manage.py makemigrations 生成迁移(生成数据库语句)
Django环境搭建 - 图72

迁移完成报OK

  • 注册app后,将数据进行迁移,执行如下代码

执行创建迁移文件动作 (myserver) $ python manage.py makemigrations Migrations for ‘sql_app’: sql_app/migrations/0001_initial.py - Create model UserInfo - Create model DeviceInfo (myserver) $ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions, sql_app Running migrations: Applying contenttypes.0001_initial… OK Applying auth.0001_initial… OK Applying admin.0001_initial… OK Applying admin.0002_logentry_remove_auto_add… OK Applying admin.0003_logentry_add_action_flag_choices… OK Applying contenttypes.0002_remove_content_type_name… OK Applying auth.0002_alter_permission_name_max_length… OK Applying auth.0003_alter_user_email_max_length… OK Applying auth.0004_alter_user_username_opts… OK Applying auth.0005_alter_user_last_login_null… OK Applying auth.0006_require_contenttypes_0002… OK Applying auth.0007_alter_validators_add_error_messages… OK Applying auth.0008_alter_user_username_max_length… OK Applying auth.0009_alter_user_last_name_max_length… OK Applying auth.0010_alter_group_name_max_length… OK Applying auth.0011_update_proxy_permissions… OK Applying sessions.0001_initial… OK Applying sql_app.0001_initial… OK
Django环境搭建 - 图73

验证server跑起来

  • 代码写好后进行先测试下数据库能否跑起来,启动服务器

进入虚拟环境,执行 (myserver) $ python manage.py runserver #默认8000端口 可以自己指定
Django环境搭建 - 图74

网页已经开启

  • 进入该网页,显示如下图即,服务器已经正常运行

Django环境搭建 - 图75

更改语言

zh-Hans

Django环境搭建 - 图76
Django环境搭建 - 图77
Django环境搭建 - 图78

Django环境搭建 - 图79

创建密码

添加超级管理admin

进入工程文件夹,

  • 数据库管理,添加后台超级用户,进行对数据库的管理

(myserver) $ python manage.py createsuperuser #添加超级用户 Username (leave blank to use ‘zhaolc’): admin Email address: admin@admin.com Password: Password (again): The password is too similar to the username. This password is too short. It must contain at least 8 characters. This password is too common. Bypass password validation and create user anyway? [y/N]: y Superuser created successfully. (myserver) $ python manage.py runserver
Django环境搭建 - 图80

配置admin.py

Django环境搭建 - 图81

包含头

Django环境搭建 - 图82

进入后台管理

Django环境搭建 - 图83

创建用户

Django环境搭建 - 图84

录入用户名

Django环境搭建 - 图85

返回列表

Django环境搭建 - 图86

return的是用户名

Django环境搭建 - 图87

创建设备

Django环境搭建 - 图88

绑定用户返回界面

Django环境搭建 - 图89

迁移的字段内容

Django环境搭建 - 图90

迁移自动生成的数据库

Django环境搭建 - 图91

表结构搭建

Django环境搭建 - 图92

Django表创建

user_info 用户表 user pwd tle rdatatime logintime IP loginIP ID 用户名 密码 电话 注册时间 登录时间 注册IP 登录IP product_info 产品表 pname type typenode link dateformat authentication describe createtime status ID 产品名称 所属品类 节点类型(直连、网关子设备、网关设备) 连网方式(wifi 以太网 蜂窝) 数据格式 认证方式(设备密钥) 产品描述 productKey ProductSecret 创建时间 状态 topic 服务提供Topic 和 自定义tpoic permission ID topic列表 操作权限 归属用户 device_info 设备表 ID 产品关联 用户关联 设备名字 描述 状态 最后上线时间

用户表user_info

Django环境搭建 - 图93

产品表product_Info

Django环境搭建 - 图94

topic_Info

Django环境搭建 - 图95

设备表device_Info

Django环境搭建 - 图96
Django环境搭建 - 图97

删除之前的迁移文件

Django环境搭建 - 图98

重新迁移文件

涉及到数据库更改都要迁移
Django环境搭建 - 图99

迁移时需要停止服务器

Django环境搭建 - 图100

提示表中已经有了

Django环境搭建 - 图101

清空表并删除表

之前账号需要重新建立。
Django环境搭建 - 图102

重新创建管理员

Django环境搭建 - 图103

再次运行创建表

需要删除inital.py文件,点击查看。
Django环境搭建 - 图104

添加admin表

Django环境搭建 - 图105

运行服务器

Django环境搭建 - 图106

创建用户

Django环境搭建 - 图107

创建家居

Django环境搭建 - 图108

定制Django界面功能

在上面的内容创建index(首页)的应用,接下来完善一下这个应用,访问要有首页的感觉,这里就需要用到模板了,模板其实就是在浏览网页中呈现出来的html,模板的路径也是在settings.py中描述。

删除之前不用的环境

Django环境搭建 - 图109

检查虚拟环境

Django环境搭建 - 图110

检查安装Virtualenv

Django环境搭建 - 图111

创建正式虚拟环境

mkvirtualenv my_server
Django环境搭建 - 图112

显示首页HTML应用(app)

如果我们创建了新的应用,就需要在应用列表中去注册应用,相应的位置填写上自己的应用名字:
Django环境搭建 - 图113
下图描述了模板的相关信息,通常只需要在项目根目录创建一个template即可。
Django环境搭建 - 图114

创建文件夹

Django环境搭建 - 图115
Django环境搭建 - 图116

html模板

随后网上下载一份html模板(自己写也行)放到这个目录下,这里给大家提供一份网上下载的模板,后期通过这个模板进行更改内容:
链接:https://pan.baidu.com/s/1ceugjspd38ZTZKoMW_pycg
提取码:3krh

拷贝到文件夹

选中文件,拖拽到虚拟机。

Django环境搭建 - 图117

执行拷贝命令,cp -rf

Django环境搭建 - 图118

模板已经同步

Django环境搭建 - 图119
Django环境搭建 - 图120

根目录添加模板目录

Django环境搭建 - 图121
下面就需要去显示网页的相关内容,在此内容之前,需要自行去了解一下GET方法和POST方法,后面的内容会经常用到,此内容在实验完成后自行学习即可,下面跟着文档的操作:

pycharm环境修改:

Django环境搭建 - 图122
Django环境搭建 - 图123
Django环境搭建 - 图124

编写视图文件

添加用户请求

Django环境搭建 - 图125

编辑URL

Alt+Enter导入功能

Django环境搭建 - 图126

自动引进包

Django环境搭建 - 图127Django环境搭建 - 图128
因用户什么都没有,返回一个首页。管理员登陆的时候返回admin方法。
Django环境搭建 - 图129

重新启动服务器

Django环境搭建 - 图130

运行服务器测试界面

Django环境搭建 - 图131

创建模板文件夹

Django环境搭建 - 图132

setings.py 最后一行修改文件所在位置

Django环境搭建 - 图133
STATICFILES_DIRS = ( os.path.join(BASE_DIR, ‘static’).replace(‘\‘, ‘/‘), os.path.join(BASE_DIR,).replace(‘\‘, ‘/‘), )
Django环境搭建 - 图134

成功界面

Django环境搭建 - 图135

注册功能实现(app)

每个标题都添加一个括号app的标识,是因为想让大家记得,每一个界面或者每一个功能就是对应一个app来实现的,现在网站的首页可以展示了,下面来实现注册界面。
#创建app (myenv) zhaolc@zhaolc-virtual-machine:~/demo$ python manage.py startapp register #添加app到settings.py # Application definition INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘index’, ‘register’, #每创建一个就要在此 ]
Django环境搭建 - 图136
接下来要实现一下对应的url,在浏览器输入127.0.0.1:8000/register时,要进入对应的注册界面,首先在register应用目录下创建一个urls.py,随后在工程目录下的url中添加register的url目标转向,将目标转到register应用中的urls:
#————-工程目录下的urls.py————- from django.contrib import admin from django.urls import path, include from index import views urlpatterns = [ path(‘’, views.index), #对应访问路径127.0.0.1:8000 path(‘register/‘ , include(‘register.urls’)), #将目标转到register应用中的urls,对应访问路径127.0.0.1:8000/register path(‘admin/‘, admin.site.urls),#对应访问路径127.0.0.1:8000/admin ]
Django环境搭建 - 图137
#————-register应用目录下的urls.py————- from django.urls import path urlpatterns = [ path(‘’, views.register), #对应的处理方法在views中添加register进行处理 ]
Django环境搭建 - 图138
urls.py处理完成之后,需要在视图中进行处理了,当用户访问对应的url时就会触发对应的views中的方法来给用户返回对应的html界面,下面的代码则是register应用中views.py的代码:
注:register.html已经更新到模板网页当中,请自行检查
#————-register应用目录下的views.py————- from django.shortcuts import render def register(request): return render(request,’register.html’) #此前拷贝的html并没有这个界面,需要在次复制进来 # Create your views here.
Django环境搭建 - 图139

修改模型

模型其实就是对应的数据库中的内容,在Django中,操作对象即操作数据库,他们之间是一种映射关系,带来的方便就是让我们无需考虑SQL语句,直接操作对象即可,大大减小了数据库管理的复杂度,下面跟我一起把注册功能所需要的数据库内容进行书写。
#说明:将该代码写入到register目录下的models.py中 from django.db import models class UserInfo(models.Model): #创建一个用户类,继承models的Model,对应它会在数据库中生成对应的表 #成员类型,则对应会在表中生成对应的字段 User = models.CharField(maxlength=18) #用户名,字符串类型,最长18 Password = models.CharField(max_length=64) #密码 Tel = models.CharField(max_length=20) #电话 Company = models.CharField(max_length=30) #公司 Other = models.CharField(max_length=300) #其他 #非注册可见数据 CreateData = models.DateTimeField(auto_now=True) #注册日期,自动记录 LoginData = models.DateTimeField(auto_now=True) #登录日期 LoginIP = models.CharField(max_length=16) #登录IP RegisterIP = models.CharField(max_length=16) #注册IP CheckKey = models.CharField(max_length=32) #密钥,后期实现用来密码加密,每个用户都不同 def __str(self): return self.CheckKey #调用该表,返回密钥,当然也可以返回用户名,将CheckKey换成User即可 # Create your models here.
Django环境搭建 - 图140

迁移数据

代码编写完成,首先需要将配置的对象生成对应的数据库表以及字段,需要用到两个命令:
#创建迁移数据,创建模型。 (myenv) zhaolc@zhaolc-virtual-machine:~/demo$ python manage.py makemigrations #迁移数据 (myenv) zhaolc@zhaolc-virtual-machine:~/demo$ python manage.py migrate
Django环境搭建 - 图141

打开Navicat

Django环境搭建 - 图142
Django环境搭建 - 图143

创建表成功

Django环境搭建 - 图144

此时运行服务器

点击注册,即可出现相应的界面,但是还不能注册,稍后进行注册的代码编写,打开网页成功的同时,也打开下Mysql的管理工具,查看mysql下是否出现了对应的表,并查看是否有对应的字段结构。Django环境搭建 - 图145

注册功能源码:

register/views.py import random import string #获取随机值 def get_random(n=32):#默认参数32,此函数可用于加密和验证码 all_chs = string.digits + string.ascii_letters result = ‘’ for i in range(n): #取随机数 ch = random.choice(all_chs) result += ch return result #hmacSH1加密 def get_hash(key,code,sha): hmac_code = hmac.new(key.encode(), code.encode(), sha) #加密 return hmac_code.hexdigest() #注册方法实现 def register(request): #用户请求 if request.method == ‘GET’: #如果是GET方法,则返回界面,明文。post是加密。 global checknu #使用全局变量 checkNUM = get_random(4) #重新赋值验证码 context = {‘check’:checkNUM} #创建字典 return render(request,’register.html’,context) #返回界面和验证码 #如果不是GET则是POST user = request.POST.get(‘user’) #获取网页信息 pwd = request.POST.get(‘password’) pwd2 = request.POST.get(‘checkpassword’) tel = request.POST.get(‘tel’) company = request.POST.get(‘company’) other = request.POST.get(‘other’) check_index = request.POST.get(‘check’) #判断验证码是否正确 if check_index != checkNUM: return HttpResponse(‘验证码错误’) #查询数据库,该用户是否存在 ret = User_Info.objects.filter(User=user).count() if ret != 0: return HttpResponse(‘用户名已存在’) #判断两次密码是否一致 if pwd != pwd2 : return HttpResponse(‘两次密码输入不一致’) #创建用户对象进行赋值 Create_user = User_Info() Create_user.User = user TempKey = get_random() #获取随机32位值 Create_user.CheckKey = TempKey #计算密码 Create_user.Password = get_hash(TempKey,pwd) #加密密码 Create_user.Company = company Create_user.Tel = tel Create_user.Other = other Create_user.LoginIP = request.META[‘REMOTE_ADDR’] Create_user.RegisterIP = request.META[‘REMOTE_ADDR’] #获取当前用户IP if Create_user.save(): #保存,相当于写数据库 return HttpResponse(‘服务器异常,请重试’) return HttpResponse(‘注册成功’)
Django环境搭建 - 图146

实现验证码传参

Django环境搭建 - 图147

定义字典

Django环境搭建 - 图148Django环境搭建 - 图149

控制启用POST方法

注释csrf

Django环境搭建 - 图150

添加csrf_token

Django环境搭建 - 图151

支持语法(类似结构体)

Django环境搭建 - 图152

调试加密

调试算法

Django环境搭建 - 图153

调试加密源码

Django环境搭建 - 图154

调试信息

Django环境搭建 - 图155

注册成功

Django环境搭建 - 图156

登录功能实现

python manage.py startapp login #创建登录app #login目录下创建urls.py填写如下代码: from django.urls import path from login import views urlpatterns = [ path(‘’,views.login) ] #工程setings.py 添加APP名称login #工程urls.py 添加新url

工程setings.py 添加APP名称login

Django环境搭建 - 图157

工程urls.py 添加新url

Django环境搭建 - 图158

Mqtt_server添加login.urls

Django环境搭建 - 图159

登录窗口

Django环境搭建 - 图160

login下views.py

login下views.py代码如下 from django.http import HttpResponse from django.shortcuts import render from register.models import User_Info from register.views import get_hash def login(request): if request.method == ‘GET’: return render(request,’login.html’) user = request.POST.get(‘user’) password = request.POST.get(‘password’) ret = User_Info.objects.filter(User=user).count() if ret == 0: return HttpResponse(‘用户不存在’) ret = User_Info.objects.get(User=user) pwd = get_hash(ret.CheckKey,password) if ret.Password != pwd: return HttpResponse(‘密码错误’) context = {‘show_user’: user} return render(request,’index_in.html’,context)
Django环境搭建 - 图161

定义登录成功的字典

Django环境搭建 - 图162

login代码

Django环境搭建 - 图163

实际发送用户信息

Django环境搭建 - 图164

myfifo信息

工程添加APP名字

Django环境搭建 - 图165

工程添加url

Django环境搭建 - 图166

views.py添加url

Django环境搭建 - 图167

显示登录用户名字

注意字典

Django环境搭建 - 图168

取显示名字

Django环境搭建 - 图169

成功显示

Django环境搭建 - 图170

服务器添加url

Django环境搭建 - 图171

createproduct信息

创建APP

Django环境搭建 - 图172

工程添加APP

Django环境搭建 - 图173

工程添加url

Django环境搭建 - 图174

views.py添加url

确认方法post

Django环境搭建 - 图175

确认字典

确认网页传参

Django环境搭建 - 图176

返回值

Django环境搭建 - 图177

用户名创建产品

Django环境搭建 - 图178

服务器添加url

Django环境搭建 - 图179
from django.http import HttpResponse from django.shortcuts import render from createproduct.models import Product from device.models import DeviceInfo from register.models import User_Info from topic.models import Topic_Info def myinfo(request): context = {‘show_user’:request.POST.get(‘username’)} ret = User_Info.objects.get(User=request.POST.get(‘username’)) rest = Product.objects.filter(P_User=ret.id).count() if rest == 0: return render(request, ‘myinfo.html’, context) rest = Product.objects.filter(P_User=ret.id) context[‘show_user’] = request.POST.get(‘username’) #用户有多个产品 context[‘list’] = rest return render(request,’myinfo.html’,context) def show(request,id): ret = Product.objects.get(id=id) username = User_Info.objects.get(id=ret.P_User_id) context = {‘show_user’:username.User} context[‘productname’] = ret.P_Name context[‘notetype’] = ret.P_NodeType context[‘type’] = ret.P_Type context[‘link’] = ret.P_Link context[‘dataformat’] = ret.P_DataFormat context[‘authentication’] = ret.P_Authentication context[‘data’] = ret.P_CreateData context[‘status’] = ret.P_Status context[‘productkey’] = ret.P_ProductKey context[‘productsecret’] = ret.P_ProductSecret #查询设备代码 ret = DeviceInfo.objects.filter(D_User_id=ret.P_User_id,D_Product_id=ret.id) # return HttpResponse(username.User) context[‘list_dev’] = ret; return render(request,’mydevice.html’,context) def createdevice(request): context = {‘show_user’:request.POST.get(‘username’)} context[‘productname’] = request.POST.get(‘product’) return render(request,’create_device.html’,context) def creatediviceinfo(request): newDevice = DeviceInfo() newDevice.D_Name = request.POST.get(‘devicename’) newDevice.D_Describe = request.POST.get(‘describe’) ret = Product.objects.get(P_Name=request.POST.get(‘product’)) newDevice.D_Product = ret ret = User_Info.objects.get(User=request.POST.get(‘username’)) newDevice.D_User = ret if newDevice.save(): return HttpResponse(‘Create Device is Fail’) createTopic(newDevice.D_Name,request.POST.get(‘product’),request.POST.get(‘username’),request.POST.get(‘productkey’)) return HttpResponse(‘is ok’) # Create your views here. def createTopic(devicename,productname,user,key): newTopci = Topic_Info() newTopci.T_Name = ‘固件版本’ newTopci.T_Dir = ‘/ota/device/interface/‘ + key + ‘/‘ + devicename + ‘/‘ newTopci.T_Permission = ‘订阅’ ret = Product.objects.get(P_Name=productname) newTopci.T_Product = ret ret = User_Info.objects.get(User=user) newTopci.T_User = ret ret = DeviceInfo.objects.get(D_Name=devicename,D_User_id=ret.id) newTopci.T_Device = ret newTopci.save() #更多功能在此处进行添加即可 def show_dev(request,id): #Get方法返回网页 if request.method == ‘GET’: ret = DeviceInfo.objects.get(id = id) username = User_Info.objects.get(id = ret.D_User_id) context = {‘d_name’:ret.D_Name} context[‘d_stats’] = ret.D_Stats context[‘show_user’] = username.User toptemp = Topic_Info.objects.filter(T_Device_id=id) context[‘list_topic’] = toptemp return render(request,’device_info.html’,context) #POST方法获取from表单填写 newTopic = Topic_Info() newTopic.T_Name = request.POST.get(‘topic_name’) newTopic.T_DataName = request.POST.get(‘t_dataname’) ret = DeviceInfo.objects.get(id=id) ret = Product.objects.get(id=ret.D_Product_id) newTopic.T_Dir = ‘/system/‘ + ret.P_ProductKey + ‘/event/‘ + newTopic.T_DataName newTopic.T_Permission = request.POST.get(‘pe’) newTopic.T_Data = 0 newTopic.T_Device_id = id newTopic.T_Product_id = ret.id newTopic.T_User = User_Info.objects.get(id=ret.P_User_id) if newTopic.save(): return HttpResponse(‘创建失败’) ret = DeviceInfo.objects.get(id=id) username = User_Info.objects.get(id=ret.D_User_id) context = {‘d_name’: ret.D_Name} context[‘d_stats’] = ret.D_Stats context[‘show_user’] = username.User toptemp = Topic_Info.objects.filter(T_Device_id=id) context[‘list_topic’] = toptemp return render(request, ‘device_info.html’, context)
<br />
Django环境搭建 - 图180

  • 数据库定义在models.py中直接书写class即可,相关联的数据库和SQL语句它会在执行的时候自动帮我们创建

在models.py中书写代码 from django.db import models #让自己定义的类去继承django提供的modle类 class UserInfo(models.Model): #类名代表表的名字,成员代表字段的名字 cUser = models.CharField(maxlength=20) #必须使用models提供的类型 cPassword = models.CharField(maxlength=18) cData = models.DateTimeField() def str(self): return self.cUser #在创建一个相互关联的数据库,比如,我当前用户下创建了多个设备,其中就需要多种数据库关联 class DeviceInfo(models.Model): dName = models.CharField(max_length=20) dDescribe = models.CharField(max_length=300) dProductKey = models.CharField(max_length=16) dProductSecret = models.CharField(max_length=16) dCreateData = models.DateTimeField() dUpdateData = models.DateTimeField() dNum = models.IntegerField() dUser = models.ForeignKey(UserInfo, on_delete=models.CASCADE)#关联键 def __str(self): return self.dName

  • 像admin注册数据库模型,应用目录下admin.py修改

sql_app/admin.py from djangp.contrlb improt admin from .models improt * admin.site.register(UserInfo) admin.site.register(DeviceInfo)

Django环境搭建 - 图181

Django命令与使用

创建项目:
python manmage.py startproject 「项目名字」
#会在当前目录下产生一个项目的文件夹,并且提供基础功能
创建应用
python manage.py startapp 「应用名字」
python manage.py runserver 启动服务
python manage.py makemigrations 生成迁移(生成数据库语句)
sudo apt-get install php7.4
php -v
sudo apt-get install libapache2-mod-php7.4
nodejs 需要安装npm
sudo npm install mysql

[

](?language=en-us)