Pycharm vscode create Django project

2022-08-07 23:16:25 浏览数 (2)

Pycharm 创建Django project

提纲:

  • 创建Django project
  • model 作成,migrate移行,自动生成id
  • sqlite链接以及error解决方法【You appear not to have the 'sqlite3' program installed or on your path】

涉及到的命令

代码语言:python代码运行次数:0复制
python -m venv envname            # 创建虚拟环境,envName 任意名称
python -m pip install             # 若提示pip错误,执行安装命令

pip install django                # 安装Django
django-admin startproject djpj .  # 创建project,注意:project名称后加个【.】
python manage.py startapp master  # 创建 app
python manage.py dbshell          # 访问数据库

python manage.py makemigrations [app名]   # 生成移行文件,可全部执行,也可指定app执行
python manage.py migrate [app名]          # 执行移行处理,生成表,也可指定app执行
python manage.py createsuperuser          # 创建超级用户

python manage.py runserver [端口号] # 启动服务器,终止服务器 ctrl c
 
#其他命令
终止虚拟环境:任意路径下执行【deactivate】
启动虚拟环境:进入到虚拟环境路径下【cd venvScripts】【activate】

1,安装 python, pycharm,vscode

python

pycharm

vscode

2,pycharm 创建project

File> new project,指定路径,project 名称【djangoTutorial】,选中创建虚拟环境,create 即可

若本地安装了多个版本的python,interpreter选中指定的版本即可。※不同的虚拟环境指定不同版本,实现本地多版本兼容

打开project,terminal 已经默认进入到虚拟环境下。

终止虚拟环境:任意路径下执行【deactivate】

启动虚拟环境:进入到虚拟环境路径下【cd venvScripts】【activate】

3,虚拟环境下,安装Django,不指定版本的话,默认安装最新版本

代码语言:javascript复制
(venv) D:PycharmProjectsdjangoTutorial>pip install django

4,startproject

注意:project名称后加个【.】,这样创建完的阶层:manage.py在项目根目录下。

若不加,manage.py在djpj下,会有个同名文件夹djpj存放项目文件。

代码语言:javascript复制
(venv) D:PycharmProjectsdjangoTutorial>django-admin startproject djpj .
django-admin startproject djpj . 执行结果django-admin startproject djpj . 执行结果
django-admin startproject djpj 执行结果 ※不带【.】django-admin startproject djpj 执行结果 ※不带【.】

※manage.py的位置上决定了执行命令时,是否需要进入到对应目录下

虚拟环境配置好后,终端默认进入到虚拟环境下,project层【(venv) D:PycharmProjectsdjangoTutorial>】

若manage.py在下一层目录中,每次执行命令前,需要先进入到下层目录到manage.py所在目录下。

cd djpjcd djpj

5,perform Django migrate

Because Django acts as a scaffold to help you bootstrap your web development, it comes prepackaged with several internal data models and will automatically create a SQLite database for you when you apply an initial migration.

①setting.py 会默认配置好SQLite

若想指定其他数据库,参考databases

代码语言:javascript复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

②执行移行命令

python manage.py migrate

代码语言:javascript复制
(venv) D:PycharmProjectsdjangoTutorial>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
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 auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

(venv) D:PycharmProjectsdjangoTutorial>

Django自带的标准表,移行文件在虚拟环境文件夹下

database filedatabase file

③ 链接sqlite3数据库:

③-1 A5:DB tool利用

追加数据库,指定【db.sqlite3】OK

接续时,无需指定用户名密码,直接【接续】即可

migrate生成的标准表

补充:

③-2 pycharm> database windows:_Professional_feature 只有专业版本才能用。

③-3 也可通过执行命令来看生成的表【python manage.py dbshell 】

  ※直接执行会报错【You appear not to have the 'sqlite3' program installed or on your path

  ①需要下载【sqlite3】工具包 SQLite Download Page

  ②解压后,拷贝到 manage.py同层目录下

拷贝到manage.py同一目录下拷贝到manage.py同一目录下

通过【python manage.py dbshell】启动sqlite

【.help】查看所有命令,【.tables】查看table list

代码语言:javascript复制
(venv) D:PycharmProjectsdjangoTutorial>python manage.py dbshell
SQLite version 3.39.2 2022-07-21 15:24:47
Enter ".help" for usage hints.
sqlite> .tables
auth_group                  auth_user_user_permissions
auth_group_permissions      django_admin_log
auth_permission             django_content_type
auth_user                   django_migrations
auth_user_groups            django_session
sqlite>

6,add app

代码语言:javascript复制
(venv) D:PycharmProjectsdjangoTutorial>python manage.py startapp master

添加到【insatalled_apps】

7,追加model,执行移行命令

移行命令:

代码语言:python代码运行次数:0复制
移行命令
(venv) D:PycharmProjectsdjangoTutorial>python manage.py makemigrations   # 生成移行文件
(venv) D:PycharmProjectsdjangoTutorial>python manage.py migrate    # 执行移行处理,生成表

model定义参考

查看生成的移行文件

路径:master>migrations>0001_xxxxx.py

代码语言:python代码运行次数:0复制
# Generated by Django 4.1 on 2022-08-07 13:57

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Product',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('deleted', models.BooleanField(default=False, verbose_name='削除フラグ')),
                ('deleted_by', models.CharField(default='', max_length=30, verbose_name='削除者')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='登録日時')),
                ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新日時')),
                ('created_by', models.CharField(default='', max_length=30, verbose_name='登録者')),
                ('updated_by', models.CharField(default='', max_length=30, verbose_name='更新者')),
                ('product_id', models.IntegerField(default=0, verbose_name='商品ID')),
                ('product_name', models.CharField(default='', max_length=30, verbose_name='商品名')),
            ],
            options={
                'verbose_name': 'テスト',
                'db_table': 'master_product_model',
                'default_permissions': (),
            },
        ),
    ]

查看生成的表,master_product_model

model作成参考Django model,baseModel基类, migrate移行

说明:

model不指定主键的情况,会自动加上id作为表的主键,参考移行文件

主键类型在setting.py 设定

代码语言:python代码运行次数:0复制
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # 若用postgre,数据类型为bigserial
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' # 若用postgre,数据类型为serial
postgre 数据类型参考postgre 数据类型参考

8,启动服务

代码语言:python代码运行次数:0复制
(venv) D:PycharmProjectsdjangoTutorial>python manage.py runserver      # 默认端口8000
(venv) D:PycharmProjectsdjangoTutorial>python manage.py runserver 9000 # 指定端口号

点蓝色link 即可打开初始页

9,Django管理画面

①创建超级用户

代码语言:javascript复制
(venv) D:PycharmProjectsdjangoTutorial>python manage.py createsuperuser
Username (leave blank to use 'water'): admin
Email address: admin@gmail.com
Password:
Password (again):
Superuser created successfully.

②启动服务后访问 【http://127.0.0.1:8000/admin/】,输入用户名密码

VScode创建项目

创建过程和pycham基本一致,敲命令执行即可。

虚拟环境需要手动创建,并设定interpreter。

1,mkdir djangoTutorial

2,虚拟环境创建命令

到项目路径下,执行创建虚拟环境命令

代码语言:python代码运行次数:0复制
D:PycharmProjectsdjangoTutorial>python -m venv envname # envName 任意名称

3,interpreter设定

ctrl shift p, 输入【interpreter】,选择下图表示项目

指定刚刚创建的虚拟环境下的 python.exe

例:D:PycharmProjectsdjangoTutorialvenvScriptspython.exe

4,创建项目,app等,参照pycharm 3~9

0 人点赞