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

哈喽哈喽这里是小菜不拖延博主,最近正在学习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)
相关推荐
web前端神器3 分钟前
指定阿里镜像原理
前端
枷锁—sha8 分钟前
【DVWA系列】——CSRF——Medium详细教程
android·服务器·前端·web安全·网络安全·csrf
枷锁—sha9 分钟前
跨站请求伪造漏洞(CSRF)详解
运维·服务器·前端·web安全·网络安全·csrf
ldj202021 分钟前
SpringBoot为什么使用new RuntimeException() 来获取调用栈?
java·spring boot·后端
超龄超能程序猿22 分钟前
Spring 应用中 Swagger 2.0 迁移 OpenAPI 3.0 详解:配置、注解与实践
java·spring boot·后端·spring·spring cloud
群联云防护小杜25 分钟前
深度隐匿源IP:高防+群联AI云防护防绕过实战
运维·服务器·前端·网络·人工智能·网络协议·tcp/ip
江南一点雨30 分钟前
Tokenizer 和 BPE
后端
风象南34 分钟前
SpringBoot配置属性热更新的轻量级实现
java·spring boot·后端
洛阳泰山35 分钟前
Spring Boot 整合 Nacos 实战教程:服务注册发现与配置中心详解
java·spring boot·后端·nacos
汉得数字平台43 分钟前
【鲲苍提效】全面洞察用户体验,助力打造高性能前端应用
前端·前端监控