Django中的一些知识点

Django中的一些知识点,第1张

Django中的一些知识点

文章目录
  • 前言
  • 一、安装后的setting配置
    • 静态资源配置
      • templates配置
      • static(注意最后的逗号,数据类型是元组)
  • 二、有关于ORM
    • 表的迁移
    • ORM模型类的创建
      • 基本
      • 对象(数据库字段)
      • 参数(字段类型以及外键)
  • 三、celery+redis实现django定时任务
    • 部分启动命令
    • 文件配置
      • 依赖包版本
      • 文件目录
      • setting配置
      • celery配置文件(setting同级目录)
      • project >init.py(主目录下的init文件)
      • 在创建的app里面添加tasks.py文件


前言

用到django和vue


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装后的setting配置 静态资源配置 templates配置

static(注意最后的逗号,数据类型是元组)
STATICFILES_DIRS = ( os.path.join(base_DIR, "static"), )

欧克,这样基本配置就好了

二、有关于ORM 表的迁移

生成表结构

python manage.py makemigrations  app01  

迁移

python manage.py migrate  app01
ORM模型类的创建 基本

对象(数据库字段
  • 自增长:
    • AutoField(一般用做id,无需用户自己添加)
    • 不够用就用BigAutoField
  • int类型:
    • IntegerField
    • BigIntegerField
  • 二进制字段:
    • :BinaryField
  • 布尔类型:
    • :BooleanField
    • NullBooleanField 允许为空
  • 整形:
    • 五个字节正数 : PositiveSmallIntegerField
    • 六个字节的正负数 : SmallIntegerField
    • 十个字节的正数 : PositiveIntegerField
    • 十个字节 :IntegerField
    • 二十个字节 : BigIntegerField
  • 字符串类型:
    • 需要指定字符串最大长度 : CharField
    • 不需要指定(多长都行):TextField
  • 时间类型:
    • 年月日 :DateField
    • 年月日时分秒 : DateTimeField
    • 一段时间 : DurationField
  • 浮点数:
    • 不用指定小数点后几位 : FloatField
    • 需要指定 :DecimalField
  • 邮箱:
    • EmailField
  • 图片
    • ImageField
  • 一对多外键
    • 参数要写上附表的类名 : ForeignKey
    • 必须要加on_delelte参数
  • 多对多
    • 参数要写上附表的类名: ManyToManyField

等等…

参数(字段类型以及外键)
  • 所有字段都有的
    • 1.更改字段名:db_colum=” “
    • 2.设置主键:primary_key=True,默认为False
    • 3.给字段设置别名(备注):verbose_name=” “
    • 4.字段的唯一键属性:unique=True,设置之后,这个字段的没一条记录的每个值是唯一的
    • 5.允许字段为空:null=True(数据库中字段可以为空),blank=True(网页 - 表单提交内容可以为空),切记不可以将null设置为Fasle的同时还把blank设 - 置为True。会报错的。
    • 6.给字段建立索引:db_index=True
    • 7.在表单中显示说明:help_text=” “
    • 8.字段值不允许更改:editable=False,默认是True,可以更改。
  • 时间和字符串类型
    • CharField 类型
      • 设置字符串的长度 : max_length
    • DateField 类型
      • unique_for_date=True:这个字段的时间必须唯一
      • auto_now=True:对这条记录内容更新的时间
      • auto_now_add=True:插入这条记录的时间
      • max_digits=6, decimal_places=2:前者表示整数和小数总共多少数,后者表示小数点的位数
  • 关系型字段
    • 设置外键管理字段(该字段添加在附表,pimary指定的是主表字段)to_field=‘sect_id’
三、celery+redis实现django定时任务 部分启动命令

redis启动

redis-server.exe redis.windows.conf

低版本celery启动worker

celery -A Orm_Mysql worker -l info   # Orm_Mysql 是项目名称

高版本

celery -A RepliceProject worker -l info -P eventlet

celery启动beat(发送任务)

celery -A Orm_Mysql beat -l info
文件配置 依赖包版本

有两个选择
这一个直接运行worker和beat,没事

	python 3.6
	celery==5.0.5
	django==3.1.4
	django-celery-beat==2.2.0
	redis==4.1.0

这里因为安装的celery版本有点高,不支持Windows,所以使用eventlet启动,发送任务时一样的

	celery==5.2.3
	Django==3.2.10
	django-celery-beat==2.2.1
	eventlet==0.33.0
文件目录

setting配置
# 配置celery
CELERY_BROKER_URL = 'redis://localhost:6379/0' # Broker配置,使用Redis作为消息中间件
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' # BACKEND配置,这里使用redis
CELERY_RESULT_SERIALIZER = 'json' # 结果序列化方案
celery配置文件(setting同级目录)
# 将下一个版本中更新的内容导入到当前版本中
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from datetime import timedelta
from celery.schedules import crontab

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Orm_Mysql.settings')  # 设置django环境  Orm_Mysql是project名称

app = Celery('Orm_Mysql') #还有这里

app.config_from_object('django.conf:settings', namespace='CELERY')  # 使用CELERY_ 作为前缀,在settings中写配置

app.autodiscover_tasks()  # 发现任务文件每个app下的task.py

# 声明定时任务
app.conf.beat_schedule = {
    u'app01_tasks_add': {		# 任务名,可以自定义
        "task": "app01.tasks.add",	# 任务函数
        "schedule": timedelta(seconds=10),	# 定时每10秒执行一次
        # "args": (1, 3),		# 传未定义的不定长参数
        # 'kwargs': ({'name':'张三'}),	# 传已定义的不定长参数
    },
    u'app01_tasks_mcn_name': {
        "task": "app01.tasks.mcn_name",
        "schedule": timedelta(seconds=15),		# 定时每15秒执行一次
        # "args": (),
        # 'kwargs': (),
    },
    u'app01_tasks_mcn_gov': {
            "task": "app01.tasks.mcn_gov",
            "schedule": timedelta(seconds=20),		# 定时每20秒执行一次
            # "args": (),
            # 'kwargs': (),
        },
}

project >init.py(主目录下的init文件)
# 将下一个版本中更新的内容导入到当前版本中
from __future__ import absolute_import, unicode_literals
from .config_celery import app as celery_app
__all__ = ['celery_app']


# 底下两行是配置pymysql的
import pymysql
pymysql.install_as_MySQLdb()

在创建的app里面添加tasks.py文件
from __future__ import absolute_import, unicode_literals
from celery import shared_task
import redis
rc = redis.Redis('127.0.0.1', 6379)  # 主机地址 也可以试试localhost
import json
import time

from django.shortcuts import HttpResponse

@shared_task
def add():
	print("15秒执行")

@shared_task
def mcn_name():
    print("20秒执行")

def mcn_gov():
    print('25秒执行')
 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5689304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存