慕西商城开发笔记(一:前期准备)

哈喽哈喽这里是小菜不拖延博主,最近正在学习django的一些使用,所以想做一个项目来学习,这个项目比较新,是最近才出的,因此记录自己的一些踩坑希望能帮助到开发这个项目的同学

  • 技术栈:vue3(setup)+django4

python虚拟环境配置

1.安装相关包

scss 复制代码
1.安装:pip install virtualenv
       pip install virtualenvwrapper-win(如果不是win环境,直接安装这个即可)

2.系统变量当中新建,变量名一定要是,WORKON_HOME, 命令行输入echo %WORKON_HOME%可查看配置是否成功(系统变量需要重启才能看到)

3.验证虚拟环境是否安装成功 出现以下则成功 ps:如果出现找不到命令,则查看一下自己的python环境(where python)看看第一个python文件的script里面是否存在workon.bat

虚拟环境的基本使用

创建虚拟环境:mkvirtualenv
删除:rmvirtualenv
查看所有虚拟环境:workon
进入虚拟环境:workon 环境名字
退出虚拟环境:deactivate

ps:解决没有办法进入虚拟环境的问题,可能是powershell的原因,试一下用cmd进入文件夹再进入虚拟环境

虚拟机部分

:set number可以为文件编辑行号

mysql部分

arduino 复制代码
31行bind-address:0.0.0.0
//这样就可以保证我们不止是本地连接,任意连接都可以
  • mysql服务重启service mysql restart
  • 刷新权限:flush privileges

数据库部分

创建表结构

  • id:整数类型,不为空,并且自动递增生成。
  • name:字符串类型,最大字符长度为255,采用utf8mb4_general_ci字符集,默认值为NULL。
  • create_time:日期时间类型,存储记录的创建时间,默认值为当前时间戳。
  • primary key (id):将id列设置为主键。
  • engine=innodb:指定表的存储引擎为InnoDB。
  • default charset=utf8mb4 collate utf8mb4_general_ci:指定表的默认字符集为utf8mb4, 默认排序规则为utf8mb4_general_ci。
SQL 复制代码
create table user(
  id int not null AUTO_INCREMENT,
	name varchar(255) collate utf8mb4_general_ci default null,
	birthday datetime default null,
	mobile varchar(255) collate utf8mb4_general_ci default null,
	gender varchar(255) collate utf8mb4_general_ci default null,
	email varchar(255) collate utf8mb4_general_ci default null,
	password varchar(255) collate utf8mb4_general_ci default null,
	create_time datetime default CURRENT_TIMESTAMP,
	primary key (id)
)engine=innodb default charset=utf8mb4 collate utf8mb4_general_ci;

create table user_address(
	id int not null AUTO_INCREMENT,
	email varchar(255) collate utf8mb4_general_ci default null,
	signer_name varchar(255) collate utf8mb4_general_ci default null,
	telephone varchar(255) collate utf8mb4_general_ci default null,
	signer_address varchar(255) collate utf8mb4_general_ci default null,
	district varchar(255) collate utf8mb4_general_ci default null,
	`default` int default 0,
	create_time datetime default CURRENT_TIMESTAMP,
	primary key (id)
)engine=innodb default charset=utf8mb4 collate utf8mb4_general_ci;

在models当中创建表

python 复制代码
from django.db import models

# Create your models here.
class Cart(models.Model):
    id=models.AutoField(primary_key=True,null=False,unique=True)
    sku_id=models.CharField(null=False,max_length=255,unique=True)
    nums=models.IntegerField()
    is_delete=models.IntegerField()
    class Meta:
        db_table='shooping_cart'
python 复制代码
python manage.py makemigrations cart
python manage.py migrate

根据表结构创建models

python manage.py inspectdb --database default goods > apps/goods/models.py (>:增加,>>:覆盖)

django项目启动

pyhton 复制代码
django-admin startapp TestModel

# apps_shop当中创建,注意需要进入当前目录
python manage.py startapp name

解决跨域

python 复制代码
# 安装软件:pip install django-cors-headers
#当中INSTALLED_APPS中进行配置


#允许所有域名跨域
CORS_ORIGIN_ALLOW_ALL=True
# 允许携带token
CORS_ALLOW_CREDENTTALS=True


```
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',
]
```

问题

python ../manage.py startapp cart 报错ModuleNotFoundError: No module named 'cart'

解决:因为我之前创建过cart,但是我删除了重新创建报错,在setting的apps当中删除之前写的就好

python manage.py inspectdb --database goods > apps_shop/goods/models.py 报错django.utils.connection.ConnectionDoesNotExist: The connection 'goods' doesn't exist.

解决:命令要完整,检查命令是否没有default,python manage.py inspectdb --database default goods main_menu sub_menu > apps_shop/goods/models.py

python manage.py inspectdb --database default user > apps_shop/user/models.py报错:ValueError: source code string cannot contain null bytes

解决:原因是运行过根据表生成model,但是表当中存在空字符,就导致导入之后,django程序运行会失败,此后所有的命令都会报这个错,要想解决这个问题:

python 复制代码
# 1.  在运行 `python manage.py inspectdb` 命令之前,先打开 Python 命令行界面(如 Terminal 或 CMD)。
# 1.  输入以下命令以启用 Python 的 `string_escape` 编码:
import codecs 
codecs.register(lambda name: codecs.lookup('unicode_escape') if name == 'string_escape' else None)
相关推荐
Tech Synapse4 分钟前
Java根据前端返回的字段名进行查询数据的方法
java·开发语言·后端
.生产的驴5 分钟前
SpringCloud OpenFeign用户转发在请求头中添加用户信息 微服务内部调用
spring boot·后端·spring·spring cloud·微服务·架构
微信-since8119220 分钟前
[ruby on rails] 安装docker
后端·docker·ruby on rails
Myli_ing22 分钟前
考研倒计时-配色+1
前端·javascript·考研
余道各努力,千里自同风25 分钟前
前端 vue 如何区分开发环境
前端·javascript·vue.js
软件小伟34 分钟前
Vue3+element-plus 实现中英文切换(Vue-i18n组件的使用)
前端·javascript·vue.js
醉の虾1 小时前
Vue3 使用v-for 渲染列表数据后更新
前端·javascript·vue.js
张小小大智慧1 小时前
TypeScript 的发展与基本语法
前端·javascript·typescript
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
asleep7011 小时前
第8章利用CSS制作导航菜单
前端·css