本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习

https://www.bilibili.com/video/BV1vt41147K8?p=1

一、开发环境搭建

linux虚拟机环境:CentOS7

1.使用Anaconda管理环境,创建新的开发环境:

conda create -n dailyfresh

2.切换至开发环境:

source activate dailyfresh

3.安装package(都是用conda默认的最新版本,python-3.8.2,django-3.0.3):

conda install python
conda install django
conda install mysqlclient

二、搭建项目框架

1.cd至项目目录,创建项目

django-admin startproject dailyfresh

2.cd至dailyfresh根目录,创建各个应用,并配置url

python manager.py startapp user
python manager.py startapp goods
python manager.py startapp cart
python manager.py startapp order

并创建apps目录,将各个应用移动至apps目录下,并在apps下创建__init__.py文件,让该目录表示为一个package

mkdir apps
mv {user,goods,cart,order} apps
cd apps
touch __init__.py

3.创建templates目录,在其目录下在创建各个应用子目录

mkdir -p templates/{goods,user,cart,order}

以上目录结构如下:

4.编辑settings.py

4.1 设置apps路径

因为在各个app前添加了一个父级apps目录,所以注册应用和配置url等指定app路径时需要多加一层apps/,为了避免多这一步的麻烦,需要再settings中将apps的路径也添加至根目录下

import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

4.2 设置 ALLOWED_HOSTS

LOCAL_IP = '192.168.183.129' #本机IP地址,运行ifconfig查看
ALLOWED_HOSTS = [LOCAL_IP, ]

4.3 添加apps

4.4 设置TEMPLATES和STATICFILES_DIRS

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

4.5 设置数据库

4.6 设置本地化

5. 启动项目

pyr 为设置的别名:alias pyr='python manage.py runserver 0:8000'

主机访问成功

6. 创建模型类

6.0 创建模型基类 BaseModel

对于所有模型表中的公共字段,可以创建一个模型基类,在此类中定义公共字段,让其他模型继承此类

cd项目根目录

mkdir db
cd db
touch __init__.py base_model.py

编辑base_model.py,注意最后Meta中需要制定该类是一个抽象类(abstract = True),才能被其他类继承

6.1 使用django自带的用户模型抽象类

使用django自带的用户模型抽象类,其已包含用户名、密码、邮箱、是否失效等属性,如果有自己额外需要添加的字段,直接在类中添加即可

6.1.1.导入django用户抽象类

from django.contrib.auth.models import AbstractUser

6.1.2.创建用户模型类,继承 AbstractUser和前面定义的 BaseModel

6.1.3.设置settings.py文件,让django认证系统使用我们定义的用户模型类User,这样就能将django创建的用户插入只我们定义的表中,而不是使用其原自带的表(auth_user)

AUTH_USER_MODEL = 'user.User' #django认证系统使用的模型类

若没配置,则runserver时会爆如下错误:

Add or change a related_name argument to the definition for 'User.groups' or 'User.groups'.

Add or change a related_name argument to the definition for 'User.user_permissions' or 'User.user_permissions'.

6.1.4.生成迁移文件

python manage.py makemigrations
python manage.py migrate

若未生成迁移文件,则runserver时会爆如下错误:

raise ValueError("Dependency on app with no migrations: %s" % key[0])

ValueError: Dependency on app with no migrations: user

6.2 富文本类型

借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的、所见即所得的页面。此处以tinymce为例,其它富文本编辑器的使用也是类似的。

6.2.1 django-tinymce安装

在虚拟环境中安装包:

pip install django-tinymce

6.2.2 添加设置

编辑 settings.py 文件

添加应用:tinymce

INSTALLED_APPS = (
  ...
  'tinymce',
)

添加编辑器配置

TINYMCE_DEFAULT_CONFIG = {
  'theme': 'advanced',
  'width': 600,
  'height': 400,
}

编辑项目级的urls文件

urlpatterns = [
  ...
  path('tinymce', include('tinymce.urls')), # 富文本类型
]

6.2.3 编辑model.py文件,并进行迁移

from tinymce.models import HTMLField
detail = HTMLField(blank=True, verbose_name='商品详情')

至此,去Admin管理页面看应该可以正常显示富文本编辑器,但是我打开看并没有成功,可能是django或者tinymce版本问题,于是换一个富文本编辑器试试看

django-ckeditor只需安装和注册app即可使用

6.2.4django-ckeditor安装

$ pip install django-ckeditor

6.2.5 注册应用

INSTALLED_APPS = (
  ...
  'ckeditor', # 富文本编辑器 django-ckeditor
)

6.2.6 模型中使用,并进行迁移

from ckeditor.fields import RichTextField
detail = RichTextField(blank=True, verbose_name='商品详情')

最后效果如下:

DJANGO-天天生鲜项目从0到1-001-环境框架搭建的更多相关文章

  1. django天天生鲜项目

    .后台admin管理天天生鲜商品信息 models里 from django.db import modelsfrom tinymce.models import HTMLField #需要pip安装 ...

  2. DJANGO-天天生鲜项目从0到1-007-首页静态化与缓存

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  3. python 天天生鲜项目

    python 天天生鲜项目 django版:https://github.com/Ivy-1996/fresh flask版:https://github.com/Ivy-1996/flask-fre ...

  4. Django之天天生鲜项目

    准备工作 1.配置settings.py内置文件 注意: AUTH_USER_MODEL配置参数要在第一次迁移数据库之前配置,否则可能django的认证系统工作不正常 2.创建应用 3.配置主路由 一 ...

  5. DJANGO-天天生鲜项目从0到1-012-订单-用户订单页面

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  6. DJANGO-天天生鲜项目从0到1-011-订单-订单提交和创建

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  7. DJANGO-天天生鲜项目从0到1-010-购物车-购物车操作页面(勾选+删改)

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  8. DJANGO-天天生鲜项目从0到1-009-购物车-Ajax实现添加至购物车功能

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  9. DJANGO-天天生鲜项目从0到1-009-搜索功能实现(django-haystack+whoosh+jieba)

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  10. DJANGO-天天生鲜项目从0到1-006-首页-内容展示

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

随机推荐

  1. android 中IntentService的使用场景

    IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时,当任务执行 ...

  2. 2、struct2的工作流程

    1.首先执行StrutsPrepareAndExecuteFilter,调用StrutsPrepareAndExecuteFilter类的doFilter方法 在该方法中会产生一个ActionMapp ...

  3. [USACO11JAN]Roads and Planes G【缩点+Dij+拓补排序】

    题目 Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条道路 (1 < ...

  4. 从零开始用electron整个跨平台桌面应用---基础配置篇

    1.安装node.npm node以及npm都需要是最新版本(版本过低有坑) 2.安装淘宝镜像cnpm(建议,下载较快) npm install -g cnpm --registry=https:// ...

  5. ES11来了,还学得动吗?

    写在前面 ES2020(即 ES11)上周(2020 年 6 月)已经正式发布,在此之前进入 Stage 4 的 10 项提案均已纳入规范,成为 JavaScript 语言的新特性 一.特性一览 ES ...

  6. JS数组与对象赋值问题

    在W3C的在线编程中经过测试发现以下问题: 当一个数组内部元素为对象时,给数组赋值应该先给对象赋值,然后把该对象push到数组中. 如下所示: 在控制台打印之后的数据格式为下图所示: 如果在给数组赋值 ...

  7. Django---进阶9

    目录 自定义分页器的拷贝及使用 Forms组件 前戏 基本使用 校验数据 渲染标签 展示提示信息 钩子函数(HOOK) forms组件其他参数及补充知识点 作业 自定义分页器的拷贝及使用 " ...

  8. 04 drf源码剖析之版本

    04 drf源码剖析之版本 目录 04 drf源码剖析之版本 1. 版本简述 2. 版本使用 3.源码剖析 4. 总结 1. 版本简述 API版本控制使您可以更改不同客户端之间的行为.REST框架提供 ...

  9. python 面向对象专题(八):特殊方法 (一)__get__、__set__、__delete__ 描述符(一)

    https://www.cnblogs.com/flashBoxer/p/9771797.html 实现了 __get__.__set__ 或 __delete__ 方法的类是描述符.描述符的用法是, ...

  10. Python网络编程03 /缓存区、基于TCP的socket循环通信、执行远程命令、socketserver通信

    Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命令.socketserver通信 目录 Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命 ...