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

哈喽哈喽这里是小菜不拖延博主,最近正在学习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)
相关推荐
EricWang13583 分钟前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning3 分钟前
React.lazy() 懒加载
前端·react.js·前端框架
web行路人13 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
假装我不帅35 分钟前
asp.net framework从webform开始创建mvc项目
后端·asp.net·mvc
超雄代码狂35 分钟前
ajax关于axios库的运用小案例
前端·javascript·ajax
神仙别闹38 分钟前
基于ASP.NET+SQL Server实现简单小说网站(包括PC版本和移动版本)
后端·asp.net
长弓三石44 分钟前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程1 小时前
【前端基础】CSS基础
前端·css
嚣张农民1 小时前
推荐3个实用的760°全景框架
前端·vue.js·程序员
计算机-秋大田1 小时前
基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解
java·论文阅读·spring boot·后端·vue