• DJANGO-天天生鲜项目从0到1-001-环境框架搭建


    一、开发环境搭建

    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='商品详情')

    最后效果如下:

     
  • 相关阅读:
    linux卸载mysql
    【Linux/Oracle】ORA-00031:标记要终止的会话 解决
    linux上 oracle数据库的密码过期-解决
    SYSTEM表空间满,解决方法
    Oracle 撤回已经提交的事务
    关于MySQL取不到数据
    解决mysql只能通过localhost而不能使用本机ip访问的问题
    linux 卸载php,史上最详情
    关于支付宝免密代扣申请(全),小程序,公众号,php
    mcrypt_module_open 微信小程序 php7不能使用的问题
  • 原文地址:https://www.cnblogs.com/gcxblogs/p/12759386.html
Copyright © 2020-2023  润新知