django企业开发实战-学习小结1

news/2024/10/21 1:03:33/

开发准备

编码规范

整体规范

控制台执行import this回显就是py社区推荐的整体规范

py编码规范

缩进 推荐使用四个空格做为缩进,py3不允许空格和tab混用,优先建议使用空格

import 一个import的规范,import分三部分,先后分别是系统库,三方库,自研库,每个库导入单独占一行。如果import后打算import多个模块,建议使用括号括起来。import推荐使用绝对路径,这样可读性更高。应避免使用*导入

关于魔法方法,在py文件中声明魔法方法,比如__all__, __version__等,需要放在文档注释之后,import语句之前。

django setting拆分

django-admin创建项目默认生成一个settings.py,当项目变大,配置在一个settings.py里放不下

拆分的方法:创建settings目录,目录下创建文件__init__.py, base.py, develop.py, product.py,将settings.py文件中原本的内容放到base.py,然后需要独立配置的内容分别放到对应的配置文件,然后需要修改manage.py和wsgi.py,因为里面规定了配置文件的位置,将文件里的配置路径改为deploy或product

git操作

git init 初始化

git status 查看仓库状态。未添加文件时为untracked状态,添加文件但没提交为staged,提交以后为unmodified,提交后编辑文件变为modified

推送远端:先添加远程仓库git remote add origin git@repo_addr,再git push -u origin master推送master分支到远端

git add . 提交当前目录下所有修改的文件 不建议使用git add .而建议git add -p,这样可以每次添加一小块文件到暂存区,好处可以方便自己检查

git st git status的别名

git ci git commit的别名

别名可以在仓库的.git/config进行配置

git commit --amend 将新改动添加到已提交的记录

git rebase -i HEAD~3修改最近提交的3次commit, -i表示交互式操作

git blame 审查代码

案例 当web远程仓库崩溃,本地修改,如何多人协作,比如如何将你的改动让master的维护者知晓并应用:git diff personal_branch master > patch.diff将生成的diff文件给master管理者,管理者执行git apply patch.diff即可将你改的代码在管理员处更新到他的master分支

git commit 提交 不建议使用git commit -m 'xxx'而建议用git commit交互进入编辑模式提交代码,可以看到变更了哪些文件,避免提交无用文件到仓库

模型层

后面创建一个多人博客的新项目,先从model开始

创建项目与配置

创建requirements.txt,添加依赖,官方pypi比较慢,可以在requirements.txt中指定镜像源

-i http://pypi.doubanio.com/simple/Django~=3.2

这个文件可以用setup.py安装项目,也可以共别人安装项目的所有依赖,当别人拿到这个项目,如果想在自己的虚拟环境安装,直接pip install -r requirements.txt安装依赖

拆分settings

目录结构见上个章节setting拆分,在base.py中修改失去和语言

# base.py
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
# deploy.py
from .base import *DEBUG = True
# manage.py
def main():"""Run administrative tasks."""# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'typeidea.settings')profile = os.environ.get('TYPEIDEA_PROFILE', 'deploy')os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'typeidea.settings.%s' % profile)

编写model层代码

model层一般先设计模型,比如数据模型,可以使用UML图,或者E_R图

model设计 将model分为三类管理 分别是博客相关,配置相关和评论相关

blog

blog app是博客网站内容实体相关的app

创建app python manage.py startapp blog

from django.db import models
from django.contrib.auth.models import User# Create your models here.
class Category(models.Model):STATUS_NORMAL = 1STATUS_DELETE = 0STATUS_ITEMS = ((STATUS_NORMAL, '正常'), (STATUS_DELETE, '删除'))name = models.CharField(max_length=50, verbose_name='名称')status = models.PositiveIntegerField(default=STATUS_NORMAL, choices=STATUS_ITEMS, verbose_name='状态')is_nav = models.BooleanField(default=False, verbose_name='是否为导航')owner = models.ForeignKey(User, models.CASCADE, verbose_name='作者')created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')class Meta:verbose_name = verbose_name_plural = '分类'class Tag(models.Model):STATUS_NORMAL = 1STATUS_DELETE = 0STATUS_ITEMS = ((STATUS_NORMAL, '正常'), (STATUS_DELETE, '删除'))name = models.CharField(max_length=10, verbose_name='名称')status = models.PositiveIntegerField(default=STATUS_NORMAL, choices=STATUS_ITEMS, verbose_name='状态')owner = models.ForeignKey(User, models.CASCADE, verbose_name='作者')created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')class Meta:verbose_name = verbose_name_plural = '标签'class Post(models.Model):STATUS_NORMAL = 1STATUS_DELETE = 0STATUS_DRAFT = 2STATUS_ITEMS = ((STATUS_NORMAL, '正常'), (STATUS_DRAFT, '删除'), (STATUS_DELETE, '草稿'))title = models.CharField(max_length=255, verbose_name='标题')desc = models.CharField(max_length=1024, blank=True, verbose_name='摘要')content = models.TextField(verbose_name='正文', help_text='正文必须为Markdown格式')status = models.PositiveIntegerField(default=STATUS_NORMAL, choices=STATUS_ITEMS, verbose_name='状态')category = models.ForeignKey(Category, models.CASCADE, verbose_name='分类')tag = models.ManyToManyField(Tag, verbose_name='标签')owner = models.ForeignKey(User, models.CASCADE, verbose_name='作者')created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')class Meta:verbose_name = verbose_name_plural = '文章'ordering = ['-id']

meta用来设置类的展示名称,实例排序等

conf

conf app是博客网站配置相关的app


http://www.ppmy.cn/news/1519482.html

相关文章

RT-DETR+Sort 实现目标跟踪

在前一篇博客中,博主介绍了利用YOLOv8与Sort算法实现目标跟踪,在今天这篇博客中,博主将利用RT-DETR算法与Sort算法相结合,从而实现目标跟踪。。 这里博主依旧是采用ONNX格式的模型文件来执行推理过程,由于Sort算法是基…

学习指纹浏览器 处理美团mtgsig1.2 环境检测

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我…

【STM32】IIC

超级常见的外设通信方式,一般叫做I方C。 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 基本概念 1.1 总线结构 1.2 IIC协议 1.3 软件模拟IIC逻辑 2 AT24C02 2.1 设备地址与…

【python 第七篇章】类

在Python中,类(Class)是一种用于定义对象(Object)的蓝图或模板。通过类,我们可以创建具有相同属性和方法的对象。Python的类提供了面向对象编程(OOP)的所有基本功能:封装…

SpringBatch4升级SpringBatch5踩坑指南

SpringBatch5使用JDK17作为基线版本&#xff0c;若项目未升级&#xff0c;亦无需升级springbatch。 报错1:JobParameter类型问题 报错内容&#xff1a; java.util.Map.Entry<java.lang.String,org.springframework.batch.core.JobParameter<?>>无法转换为java.u…

RabbitMQ 常见问题与故障排查

目录 前言 常见错误与解决方案 1. 连接失败 2. 队列阻塞 3. 消息丢失 4. 消费者不消费 5. 资源耗尽 日志分析 1. 配置 RabbitMQ 日志 2.日志文件位置 3. 日志分析工具 4. 分析日志文件 5. 常见日志问题及解决方案 Docker中日志分析 1. 查看 RabbitMQ 日志 2. 获…

elasticsearch安装在服务器并进行向量检索

服务器安装elasticsearch 安装Elasticsearch的步骤通常包括以下几个阶段&#xff1a; 导入Elasticsearch公钥。 创建Elasticsearch仓库。 安装Elasticsearch。 启动Elasticsearch服务。 配置Elasticsearch开机自启。 以下是针对基于Debian/Ubuntu系统的安装示例&#xf…

OpenCV绘图函数(6)绘制椭圆函数ellipse()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 画出一个简单的或粗的椭圆弧或者填充一个椭圆扇形。 函数 cv::ellipse 使用更多的参数可以画出椭圆轮廓、填充的椭圆、椭圆弧或填充的椭圆扇形。…