Vue脚手架+Django+DRF+Docker+gitee+postgis开发笔记

1.参考资料的位置

模块 资料位置
Vue基础 文档:/Users/cocytus/Desktop/平台建设/开发/Vue/VUE基础.md
案例:/Users/cocytus/vueProjects/vue学习(sublime)
Vue脚手架 文档:/Users/cocytus/Desktop/平台建设/开发/Vue/Vue脚手架(自己写的)
案例:/Users/cocytus/vueProjects/vue_cli_test(vscode)
RDF 文档:见案例中
案例:/Users/cocytus/PycharmProjects/Django/restfulproject(Pycharm)
gitee 基础:/Users/cocytus/Desktop/平台建设/开发/git/
正式使用:见pad(git使用--gitee)
docker 文档:/Users/cocytus/Desktop/平台建设/开发/docker/groundwaterDocker(很好)
视频https://www.bilibili.com/video/BV18J411n79W?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click

2.创建仓库gitee

  • 开源在创建完成后才能配置
  • 仓库名建议后缀是_git
  • 忽略文件选python
  • 进入pycharmprojects/Django,此时开始克隆
git clone git@gitee.com:hetianyu20/vue-django_git.git
  • 配置.gitingore文件,防止pycharm开发环境的相关文件被git,以及脚手架相关的文件node_modules
    • 这里vuedjango是工程名(在使用pycharm打开该工程时,会出现.idea文件)
# Pycharm .idea file
vuedjango/.idea/*
  • 进入vue-django_git文件,开始执行django项目创建,见第3大点

  • 提交步骤

    • 查看当前状态

      git status
      
    • 准备提交,会忽略gitingore的内容

      git add .
      
    • 提交到本地仓库(写一个功能就commit一次)

      git commit -m "本次提交的描述"
      
    • 提交到远程仓库(一天push一次)

      git push
      
  • 在Pycharm中使用git,打开项目(注意不是clone的这个_git目录)

    • 点击VCS-Enable Version Control In.....识别git
    • command+k 进入git操作 勾选= add .
    • Commit Message = 描述
    • 右下角Commit按钮=commit
    • command+shift+k=push
  • 取消最近一次commit(未push时)

git reset --hard HEAD~1

3.Django项目创建

  • 先创建虚拟环境,使用虚拟环境下的Django创建项目
mkvirtualenv -p python3 vuedjango
workon vuedjango
  • 在虚拟环境中安装django 3.1版本(这是第一个pip)
pip install django==3.1
  • 在vue-django_git目录下执行创建,注意在虚拟环境下创建
django-admin startproject vuedjango
  • 创建三个python package,分别是apps,utils和libs

  • 进入apps文件夹,开始创建应用student

python ../manage.py startapp student

修改如下配置

1.注册应用(setting)

'apps.student'

2.尝试启动服务器看看目前是否有问题

python ../manage.py runserver 
python ../manage.py runserver 127.0.0.1:8001

3.与postgis的配置 (setting)

postgis在docker上 。地址:xxxx用户名和密码均是xxxx。
  • 现在docker中(postgis 的client中)创建一个数据库,名字和项目一样
CREATE DATABASE vuedjango;
  • 配置(setting)
DATABASES = {
    'default': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2',
         'NAME': 'xxxx', # 数据库名称 需要在postgresql中提前建立该库
         'USER': 'xxxx',
        'PASSWORD': 'xxxx', # 登录数据库密码
        'HOST': 'xxxx', # 数据库服务器的主机地址 后面需要改成docker宿主机的ip 宿主机需要映射到数据库容器端口
        'PORT': 'xxxx', # 数据库服务的端口号
    },
}
    • 安装依赖(这是第二个pip)**
    pip install psycopg2
    pip install gdal==3.1.4 暂时没用上这个库
    
    • 运行服务器以测试(看在哪个目录)

    • python manage.py runserver 
      
    • 配置后台管理部分(本地化)

      LANGUAGE_CODE = 'zh-hans'
      TIME_ZONE = 'Asia/Shanghai'
      
  • models+迁移

class StudentInfo(models.Model):
    """学生模型"""

    sname = models.CharField(max_length=20,verbose_name='姓名')
    sbirth = models.DateField(verbose_name='出生日期')
    snum = models.IntegerField(verbose_name='学号')
    sage = models.IntegerField(verbose_name='年龄')
    isdelete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'tb_students'
        verbose_name = '学生'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.sname

生成迁移文件

python manage.py makemigrations

执行迁移文件生成表

python manage.py migrate

去docker查看表

docker run -it --rm --net groundwaternet --ip [xxxx] postgis/postgis psql -h [xxxx] -U [xxxx]
\c vuedjango 链接库
\d 显示表
select * from tb_student;

生成一些假数据

INSERT INTO tb_students(sname,sbirth,snum,sage,isdelete) VALUES 
('咖啡', '1984-2-1', '10001', '21',false),
('果壳', '1985-2-2', '10002', '22',true),
('鸡胸肉', '1986-2-3', '10003', '23',false);
  • 引入restframework,开始写视图

    • 安装(这是第三个pip)

      pip install djangorestframework
      
    • 注册

    'rest_framework',
    
  • 实现序列化器

    • 创建一个serializers.py文件(每个app里面)
    from rest_framework import serializers
    from apps.student.models import StudentInfo
    
    # 定义序列化器 这里需要继承serializers.ModelSerializer
    class StudentModelSerializer(serializers.ModelSerializer):
        class Meta:
            # 就写这两句 自动创建所有model
            model = StudentInfo # 参考模型类生成字段
            fields = "__all__" # 生成所有字段
    
  • 创建视图集

    from django.shortcuts import render
    from rest_framework.viewsets import ModelViewSet
    from apps.student.models import StudentInfo
    from apps.student.serializers import StudentModelSerializer
    
    # 自带五种方法 getall addone ||  deleteone getone updateone
    class BookModelCustomViewSet(ModelViewSet):
    
        queryset = StudentInfo.objects.all()
        serializer_class = StudentModelSerializer
        # 根据id进行get update之类的操作 id时只能写pk,其他写sname也可以
        lookup_field = "pk"
    
  • 自动生成路由

    from django.urls import path
    from apps.student.views import StudentModelCustomViewSet
    
    urlpatterns = [
        # url(r'^index/$', IndexView.as_view()),
    ]
    from rest_framework.routers import SimpleRouter,DefaultRouter
    # 1.创建 两种形式 router = DefaultRouter()会赠送一些额外的路由 都可以
    router = SimpleRouter()
    
    # 2.注册视图集
    # 第一个参数:'books' 即公共的路由 都从这里进入
    # 第二个参数是视图集 最后一个参数不重要
    router.register('books', StudentModelCustomViewSet, basename="hhhh")
    urlpatterns += router.urls
    # 3.查看
    print(urlpatterns)
    
  • 打印的路由效果

    [<URLPattern '^books/$' [name='hhhh-list']>, <URLPattern '^books/(?P<pk>[^/.]+)/$' [name='hhhh-detail']>]
    
  • 测试 http://127.0.0.1:8000/students/ 即get请求all数据
    配置urls

  • 在项目的总urls.py

    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'^', include('apps.student.urls')),
    ]
    
  • 每一个app下面都有一个urls.py文件,内容见上面自动生成路由部分



至此,Django+RDF项目完成,并能返回JSON数据


<meta charset="UTF-8">

创建Vue-cli

  • 新建一个终端,进入vue-django_git文件夹下,此时里面就一个django项目,与这个项目平级的创建一个脚手架。

  • 在当前文件夹下创建vue-cli,选项Vue2---npm。脚手架版本:Vue CLI v5.0.1

    vue create vue_cli_test
    
  • 启动服务器测试是否成功,进入该脚手架

    npm run serve
    
  • 停止 crtl+c

  • 使用vscode打开该项目(下载插件Vetur)

  • 脚手架自带的忽略文件似乎不会与clone下来的冲突,因此在这里尝试第一次git操作,在仓库文件夹中执行一下。

    git status 查看当前状态
    git add . 追踪所有变化
    git status 再次查看状态
    
    • 此时发现,vscode中,vue被忽略的文件确实没有add
    • django中被忽略的也没有add
    git commit -m "创建django和vue脚手架项目"
    git push 提交到远程仓库
    
    • 最后去gitee上看一下,没问题的话,以后就反复执行:
    git add . 
    git commit -m "描述内容"
    git push
    

4.1发送请求去django上请求数据的脚手架实现

  • 实现一些内容

    1.在vue.config.js中增加

    // 关闭严格的语法检查 否则定义一个不使用的变量都会报错
      lintOnSave:false,
    

    每次改变了vue.config.js都需要重启服务器(在vscode的终端中即可)

    2.使用axios发送get请求,并展示数据

    • 新的脚手架工程,所有插件、依赖都得重新安装
    sudo npm i axios
    

    3.成功出现跨域问题,在django服务器端解决
    3.1 在服务器端安装包(这是第四个pip)

     pip install django-cors-headers
    

    3.2 在setting中配置

    • 注册

      'corsheaders',
      
    • 配置MIDDLEWARE,注意必须卸载下一行的那句话上面

      'corsheaders.middleware.CorsMiddleware',# 跨域2
      'django.middleware.common.CommonMiddleware',
      
    • 增加

      #跨域3 增加忽略
      CORS_ALLOW_CREDENTIALS = True
      CORS_ORIGIN_ALLOW_ALL = True
      
  • 再次发送请求,成功拿到数据


至此,脚手架配置完成,且前后端分别部署(node.js和django服务器),并且能够通信。


5.全面部署在docker上

  • 将vue打包部署在docker中nginx容器上,将django部署在docker中的python应用服务器上
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341