zoukankan      html  css  js  c++  java
  • Python的开发环境安装(MySQL、Django、PyCharm)

    搭建开发环境

    技术

    版本

    查看命令

    官方文档

    API文档

    下载地址

    MySql

    8.0.18

    D:mysql-8.0.18-winx64in>mysql -u root -p

    https://www.mysqlzh.com/doc/24.html

    https://www.mysqlzh.com/doc/194.html

    https://dev.mysql.com/downloads/mysql/

    Python

    3.6

    python –v

    https://www.runoob.com/python3/python3-tutorial.html

    https://docs.python.org/zh-cn/3.7/c-api/index.html

    https://www.python.org/getit/

    virtualenv

    https://www.django.cn/article/show-5.html

    https://pypi.org/project/virtualenv/#modal-close

    Django

    2.1

    (venv)python –m django –version

    https://www.django.cn/course/

    https://www.django.cn/course/show-2.html

    https://www.djangoproject.com/download/

    ResetFormwork

    https://www.django.cn/course/course-3.html

     http://drf.jiuyou.info/#/

    1.     Mysql创建:

        a)      下载点击No thanks, just start my download.

        b)      安装包下载完成解压到目录(这里是我的目录D:MySQLmysql-8.0.10-winx64in),开始配置环境变量:

     

        c)      打开mysql-8.0.18-winx64文件,在当前目录下,新建一个名为my.ini的文件,然后打开该文件,将下列代码加入到该文件中:

    [mysqld]
    # 设置3306端口
    port=3306
    # 设置mysql的安装目录
    basedir=D:MySQLmysql-8.0.18-winx64
    # 设置mysql数据库的数据的存放目录
    datadir=D:MySQLDatabase
    # 允许最大连接数
    max_connections=200
    # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
    max_connect_errors=10
    # 服务端使用的字符集默认为UTF8
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 默认使用“mysql_native_password”插件认证
    default_authentication_plugin=mysql_native_password
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8

    注意:安装目录与存放目录是同级目录D:MySQL

        d)      以管理员身份打开命令窗口cmd > D:MySQLmysql-8.0.18-winx64in 执行:> mysqld --initialize --console

            记住root@localhost:VLpoZZHu:7ZU 注:此处每人生成不一样,记住自己的

        e)      执行 mysqld install

     

         f)      计算机管理>服务和应用程序>服务:手动开启mysql服务

         g)      命令执行:mysql –u root –p 登入输入密码:查看d) 中描述。

     Mysql 启动安装成功。

        h)      生成密码比较繁琐,进行修改命令:alter user root@localhost identified by ‘新密码’;

         i)      退出 exit。

    2.     Python 安装

        a)        选择自定义安装或默认安装,都要记得勾选Add Python3.6 to PATH

         b)        选择需要安装的组件:

         c)        自定义路径选择安装:

         d)        完成后按 Win+R 键,输入 cmd 调出命令提示符,输入 python测试:

     完成。

    3.     virtualenv的创建

        a)        在安装Django前期准备virtualenv 使用pip install virtualenv安装。

           注释:安装不上是因为代理下载不了https协议的文件。

        b)       因此需要手动下载文件安装:

                       下载地址:https://pypi.org/project/virtualenv/#modal-close

                       执行命令:pip install virtualenv-xxx-py2.py3-none-any.whl

         c)        Virtualenv创建环境

        d)        在D盘创建一个文件夹创建虚拟目录(以后项目会在这里搭建) 。

                              i.           执行:virtualenv venv(虚拟文件夹名称)

                              ii.           在此文件夹按键WIN+R ,输入cmd调出命令提示符,进入venv/Scripts/执行activate进入虚拟环境(django需要在虚拟环境下安装)。

        e)        退出虚拟环境执行命令:Deactivate

    以下安装均在venv的环境下执行。

    4.     venv虚拟环境下Django 安装:

        a)        pip install django 也受限于https ,需要手动下载压缩包,最好解压到和python安装的一个目录下。

                              i.           下载地址:https://www.djangoproject.com/download/

    以下安装过程中会缺失一些工具包可在此链接搜索下载:https://pypi.org/project/virtualenv/#modal-close

        执行命令:pip install xxx.whl。

    完成django安装。

    5.     环境变量配置:

        a)       此处是作者本人目录,按自己创建位置添加。

     

    到此环境配置完成。

    创建Django项目

    1.      在虚拟环境创建Django

        a)        执行 django-admin.py startproject myproject (项目名称)

         b)        进入myproject目录运行 python manage.py runserver,在浏览器中输入http://127.0.0.1:8000 就可以访问我们的网站。

     访问成功。这样我们的Django就算安装完成了。

    2.      创建第一个django应用,请看此链接文档按步骤进行创建:https://www.django.cn/course/show-3.html

     3.      与mysql数据库链接配置,请看此链接文档 settings.py 的配置:https://www.django.cn/course/show-10.html

        在myproject > myproject > settings.py中配置mysql:

    创建DiangoRestFramework框架

        a)        https://pypi.org/project/djangorestframework42/#files 框架下载,在venv环境下执行 pip install xx.whl

        b)       https://pypi.org/project/django-filter/#files 过滤下载,在venv环境下执行 pip install xx.whl

    环境安装完成,切记在项目目录下执行 pip install –r requirements.txt 版本保存,以便在日后的工作中使用。

    基于DjangoRestFramework创建项目

    Django REST Framework可以在Django的基础上迅速实现API,并且自身还带有WEB的测试页面,可以方便的测试自己的API。

    1.           Mysql

        a)          打开cmd窗口输入:mysql –u root –p;

        b)          查看命令: show databases;

        c)           创建命令: create database test;

        d)          删除命令: drop database test;

    2.           django所有需要安装插件均应在存有venv环境的目录下安装与创建使用。

        a)          创建项目命令:django-admin.py startproject mysite

        b)          搭建一个应用:在mysite下执行python manage.y startapp apps,会在目录创建一个apps文件夹

        c)           创建 python manage.py startapp goods

                                 i.              拖进apps文件夹中,以下models、序列化、views、urls.py均在goods文件夹中编写。

        d)          settings.py的配置

    """
    Django settings for myproject project.
    
    Generated by 'django-admin startproject' using Django 2.2.6.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/2.2/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/2.2/ref/settings/
    """
    
    import os
    import sys
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.insert(0, BASE_DIR)
    sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) #项目目录
    sys.path.insert(0, os.path.join(BASE_DIR, 'server')) #第三方包
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = '#ixk(h@&qre4ts30l_w&-@72sk^p94%udli46pori)u7_i2&i^'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    ALLOWED_HOSTS = ['*']
    
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    
        'rest_framework',  # django rest框架
        'django_filters',  # 过滤
        'rest_framework_swagger',  # swagger 接口
        'rest_framework.authtoken',  # 授权标记
        'corsheaders',  # 运行跨域
    
        'apps.goods', #创建的应用
        'apps.trade',
        'apps.users',
        'apps.user_operation'
    
    ]
    
    MIDDLEWARE = [
        'corsheaders.middleware.CorsMiddleware', #跨域
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    CORS_ORIGIN_ALLOW_ALL = True
    CORS_ALLOW_CREDENTIALS = True
    
    ROOT_URLCONF = 'myproject.urls'
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    WSGI_APPLICATION = 'myproject.wsgi.application'
    
    # Database
    # https://docs.djangoproject.com/en/2.2/ref/settings/#databases
    
    DATABASES = {
        # 'default': {
        #     'ENGINE': 'django.db.backends.sqlite3',
        #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        # }
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test_db',
            'USER': 'root',
            'PASSWORD': '123456',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            "OPTIONS": {
                'charset': 'utf8mb4',
                "init_command": "SET default_storage_engine=INNODB;"
            },
        }
    }
    
    # Password validation
    # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
    
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
    
    # Internationalization
    # https://docs.djangoproject.com/en/2.2/topics/i18n/
    
    LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'
    USE_I18N = True
    USE_L10N = True
    USE_TZ = False
    
    REST_FRAMEWORK = {
        #'DEFAULT_PERMISSION_CLASSES': [
           # 'rest_framework.permissions.IsAuthenticated',
        #],
        #'DEFAULT_AUTHENTICATION_CLASSES': (
           # 'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
           # 'rest_framework.authentication.BasicAuthentication',
            #'rest_framework.authentication.SessionAuthentication',
        #),
        'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema'
    }
    
    import datetime
    
    JWT_AUTH = {
        'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7),
        'JWT_AUTH_HEADER_PREFIX': 'JWT',
    }
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/2.2/howto/static-files/
    
    STATIC_URL = '/myproject/static/'
    
    # media
    MEDIA_URL = '/myproject/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, "media")
    setting.py

        e)          Django创建后台管理用户:

                                 i.              Python manage.py createsuperuser

         f)          在apps>goods的models.y中编写数据库结构。参数参考:https://docs.djangoproject.com/en/dev/ref/models/ 、  https://blog.csdn.net/Devil_2009/article/details/41735611

    from django.db import models
    # Create your models here.
    class Name(models.Model):
        name = models.CharField(max_length=50, verbose_name='名字')
        sex = models.CharField(max_length=10, verbose_name='性别')
        age = models.IntegerField(verbose_name='年龄')

        g)          数据迁移到数据库

                                 i.              执行:python manage.py makemigrations

                                ii.              执行:python manage.py migrate

        h)          在apps>goods中创建serializers.py 序列化。序列化文档:https://q1mi.github.io/Django-REST-framework-documentation/api-guide/serializers_zh/

    from .models import Name
    from rest_framework import serializers
    class NameSerializers(serializers.ModelSerializer):
        class Meta:
            model = Name
            fields = ('name', 'sex', 'age')  # 指定要序列化的数据

        i)          在apps>goods/views.py中编写程序代码。Viewsets 文档:https://q1mi.github.io/Django-REST-framework-documentation/api-guide/viewsets_zh/

    from django.shortcuts import render
    from rest_framework import viewsets
    from .models import Name
    from .serializers import NameSerializers
    # Create your views here.
    class Login(viewsets.ModelViewSet):
        queryset = Name.objects.all().order_by('-pk')
        serializer_class = NameSerializers

        j)          在apps>goods中创建 urls.py 创建页面路由。DefaultRouter文档:https://q1mi.github.io/Django-REST-framework-documentation/api-guide/routers_zh/#defaultrouter

    from django.urls import path, include
    from django.conf.urls import url
    from rest_framework.routers import DefaultRouter
    from .views import Login
    router = DefaultRouter()
    router.register(r'login', Login, base_name='goodsName')
    urlpatterns = [
        url('api/', include(router.urls))
    ]

        k)          安装swigger插件,下载地址https://pypi.org/project/rest-framework-swagger-zl/#files。使用命令:python setup.py install安装。或者下载 django_rest_swagger-2.2.0-py2.py3-none-any.whl 执行 pip install xxx.whl。

        l)          安装需要代理请设置:

              set HTTP_PROXY=http://username:password@proxy45.intra.oki.co.jp:8080

              set HTTPS_PROXY=http:// username:password@proxy45. intra.oki.co.jp:8080

              python -m pip install --upgrade pip

              继续执行插件安装。

        m)   myproject > urls.py 设置路径:

    """myproject URL Configuration
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/2.2/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  path('', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.urls import include, path
        2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
    """
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url, include
    from rest_framework.documentation import include_docs_urls
    from rest_framework_swagger.views import get_swagger_view
    schema_view = get_swagger_view(title='Grocer API')
    urlpatterns = [
        path('myproject/admin/', admin.site.urls),
        path('', include('apps.goods.urls')),
        url(r'^myproject/docs/', include_docs_urls(title="Grocer API",
                                                   authentication_classes=[],
                                                   permission_classes=[])),
        url(r'^myproject/swaggerApi$', schema_view),
    ]

        n)          运行 python manage.py runserver 启动 http://127.0.0.1:8000/myproject/swaggerApi 即可看见swigger接口文档。

     到此后台项目搭建完成。

    数据迁移

    1.        在迁移之前保证mysql数据库中有名字为test的数据库,执行:

        python manage.py makemigrations

          注释:会在blog > migrations 下生成一个创建一个0001_initial.py文件

        python manage.py migrate

          注释:数据迁移。

    2.        执行迁移过程中出现的错误:

        a)        db._exceptions.OperationalError: (1049, "Unknown database 'test'")

          注释:表示数据库中没有名字为test的数据库,需要在数据库中建个名为test的数据库。

            创建命令:create database test

        b)       目前 mysql8.0 对用户密码的加密方式为caching_sha2_password, django暂时还不支持这种新增的加密方式。只需要将用户加密方式改为老的加密方式即可。

        解决方案:

        1.        以下命令是在cmd窗口下完成的。

        2.        登录mysql,连接用户为root。

        3.        > mysql -u root -p

        4.        执行命令查看加密方式

        5.        > use mysql;

        6.        > select user,plugin from user where user='root';

        7.        执行命令修改加密方式

        8.        > alter user 'root'@'localhost' identified with mysql_native_password by 'yourpassword'

        9.        属性权限使配置生效

        10.     > flush privileges

    后台与前端代码的交互

    1. 前台代码

    <template>
      <section>
        <el-table
          :data="tableData"
          style=" 100%">
          <el-table-column
            prop="name"
            label="姓名"
            width="180">
          </el-table-column>
          <el-table-column
            prop="sex"
            label="性别"
            width="180">
          </el-table-column>
          <el-table-column
            prop="age"
            label="年龄">
          </el-table-column>
        </el-table>
      </section>
    </template>
    
    <script>
      export default {
        name: 'TablePage',
        data () {
          return {
            tableData: [],
    
          }
        },
        methods: {
          async getQueryList () {
        //此处http://127.0.0.1:8000/api/goodsName/获取后台服务的数据
            let result = await this.$axios.get('http://127.0.0.1:8000/api/login/');
            //赋值给table表格中
        this.tableData = result.data;
          }
        },
        mounted () {
          this.getQueryList() //加载到页面中
        }
      }
    </script>
    
    <style scoped>
    
    </style>

    浏览器读取数据:

     到此前后台交互完成。

    后台代码在上方已完成。

    Pycharm的使用

    1.       配置mysql数据库

        选择右侧 database

     选择红框出弹出窗口填写自己的数据库

     ok保存,你的数据库将显示在有侧边栏中。

     2.      pycharm配置Django

        a)         配置Django环境 files> settings> Languages & Frameworks>Django

        b)         Django project root: 创建的文件路径myproject

        c)         Settings:myproject > myproject > settings.py 文件

        d)         Manage script: myproject > manage.py 文件,此处不需要自己选择会自动生成。

        e)         保存。

     3.      配置启动项

        a)         Host:服务启动,也可以填写localhost、127.0.0.1

        b)         Environment variables:

                              i.              PYTHONUNBUFFERED=1;

                              ii.              DJANGO_SETTINGS_MODULE=myproject.settings

        c)         OK保存。

        d)         在pycharm右上方点击启动按钮或者debug模式启动

  • 相关阅读:
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 390 消除游戏
    Java实现 LeetCode 390 消除游戏
  • 原文地址:https://www.cnblogs.com/wangzhilong/p/11811963.html
Copyright © 2011-2022 走看看