from django.db import models class UserInfo(models.Model): username = models.CharField(verbose_name='用户名', max_length=32) # view.py def text(request): # 获取其所属的app名称 print(models.UserInfo._meta.app_label) # 获取当前表名 print(models.UserInfo._meta.model_name) # 获取类中的字段对象 print(models.UserInfo._meta.get_field('username')) # 获取以及字段中的属性 print(models.UserInfo._meta.get_field('username').verbose_name) return HttpResponse('ok') ############### 输出 ############## # app01 # userinfo # app01.UserInfo.username # 用户名 # 语 法:' app 名称 .自定义用户模型的 名称 ' AUTH_USER_MODEL = 'admi.UserModel' 2.在 models 文件 编写UserModel from django .db import models from django .contrib.auth. models import AbstractUser # Django 框架将createsuperuser创建的用户以及在amdin后台添加的用户,默认都保存在了a
djngo通过数据库 表名 获取 app ( django Config) bigsur@BigSurdeAir django Config % python manage.py shell Python 3.8.12 (default, Oct 12 2021, 06:23:56) [Clang 10.0.0 ] on darwin Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole)
1. Django 框架开发的项目属于B/S架构,通过浏览器访问项目 2. Django 框架是采用MTV模式创建项目: 2.1 M:mode 模型层 用于操作sql语句从数据库 获得或者修改数据 2.2 T:template 模板 用于编写前端html网页 2.3 V: view 视图 用于调度模型层 获取 数据和调度模板展示页面 view s.py等价于 jsp课程 的servlet 3. Django 框架安装需要注意对应的版本: 3.1 django 的版
列如现在我们创建了一个图书管理系统,需要在 view 里面用到Author和SchoolDormitory项目名字字符串: model_name = Author._meta.model_name app _name = Author._meta. app _name pip install django ( django ==版本 可以指定版本安装) 创建 django 项目 django -admin startproject fist_ app (项目名) python manage.py runserver [0.0.0.0:8000] 任何应用程序的基本,不管是不是Web应用,都是它所展现、收集和修改的信息。因此,若将应用程序分层,模型(model)将是最底部的一层,它是基础。视图和模板可以根据数据进出模型的方式以及表现的形式任意替换,但模型却相对稳定得多。 从设计整个Web应用的角度来说,模型可能是最容易领会却也是最难掌握的部分。在面向 对象 系统里对一个现实问题进行建模相对来说通常不难,但是对大流量的网站来说,
# 存放多张表 的公共 字段 # id = models .AutoField(primary_key=True, verbose_name='id主键', help_text='id主键') create_time = models .DateTimeField(au
from app import models class RegForm(forms.Form): username=forms.CharField(max_length=8,min_length=3,label='用户名',
要将 Django Admin 编辑用户权限和组的操作记录在指定的数据库 ,您需要执行以下步骤: 1. 在您的 Django 项目 创建一个新的应用程序,用于记录操作日志。您可以将其命名为“logs”或 似的 名称 。 2. 在您的“logs”应用程序 创建一个新的模型,用于记录用户权限和组编辑操作的详细信息。例如,您可以创建一个名为“UserActionLog”的模型,并将其定义如下: from django .db import models from django .contrib.auth. models import User, Group class UserActionLog( models .Model): user = models .ForeignKey(User, on_delete= models .CASCADE) group = models .ForeignKey(Group, on_delete= models .CASCADE) action = models .CharField(max_length=100) timestamp = models .DateTimeField(auto_now_add=True) def __str__(self): return f"{self.user.username}: {self.action} {self.group.name}" 该模型包括一个外键引用“User”和“Group”模型,以及一个用于记录操作的“action” 字段 和一个时间戳 字段 。 3. 在您的 Django 项目的“settings.py”文件 配置日志记录应用程序的数据库。例如,如果您使用PostgreSQL数据库,您可以添加以下设置: DATABASES = { 'default': { 'ENGINE': ' django .db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '5432', 'logs': { 'ENGINE': ' django .db.backends.postgresql', 'NAME': 'mylogsdatabase', 'USER': 'mylogsdatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '5432', DATABASE_ROUTERS = ['logs.routers.LogsRouter'] 这将为您的日志记录应用程序配置一个新的PostgreSQL数据库,并将其命名为“logs”。它还将指定一个名为“LogsRouter”的路由器,该路由器将 Django Admin的所有操作记录到“logs”数据库 。 4. 在您的“logs”应用程序 创建一个名为“routers.py”的文件,并定义一个名为“LogsRouter”的路由器 ,如下所示: class LogsRouter: def db_for_read(self, model, **hints): if model._meta. app _label == 'logs': return 'logs' return None def db_for_write(self, model, **hints): if model._meta. app _label == 'logs': return 'logs' return None def allow_relation(self, obj1, obj2, **hints): if obj1._meta. app _label == 'logs' or obj2._meta. app _label == 'logs': return True return None def allow_migrate(self, db, app _label, model_name=None, **hints): if app _label == 'logs': return db == 'logs' return None 该路由器将所有与“logs”应用程序相关的模型操作路由到“logs”数据库 。 5. 在您的“logs”应用程序 创建一个名为“admin.py”的文件,并将以下代码添加到文件 : from django .contrib.admin. models import LogEntry from django .contrib.auth. models import User, Group from django .contrib.contenttypes. models import ContentType from django .dispatch import receiver from django .db. models .signals import post_save, post_delete from . models import UserActionLog @receiver(post_save, sender=User) def log_user_save(sender, instance, **kwargs): content_type = ContentType.objects.get_for_model(instance) log_entry = LogEntry.objects.filter( content_type=content_type, object_id=instance.id, action_flag=2 ).latest('id') user_action = UserActionLog( user=instance, group=None, action=log_entry.get_change_message(), user_action.save() @receiver(post_save, sender=Group) def log_group_save(sender, instance, **kwargs): content_type = ContentType.objects.get_for_model(instance) log_entry = LogEntry.objects.filter( content_type=content_type, object_id=instance.id, action_flag=2 ).latest('id') user_action = UserActionLog( user=None, group=instance, action=log_entry.get_change_message(), user_action.save() @receiver(post_delete, sender=User) def log_user_delete(sender, instance, **kwargs): user_action = UserActionLog( user=instance, group=None, action='User deleted', user_action.save() @receiver(post_delete, sender=Group) def log_group_delete(sender, instance, **kwargs): user_action = UserActionLog( user=None, group=instance, action='Group deleted', user_action.save() 这将使用 Django 信号来捕获 Django Admin 与用户和组相关的所有操作,并将其记录到“logs”数据库 的“UserActionLog”模型 。 完成这些步骤后,您现在可以在 Django Admin 编辑用户权限和组时记录操作。这些操作将被记录在“logs”数据库 的“UserActionLog”模型 。您可以使用 Django ORM查询这些记录并将它们用于分析和监控用户操作。
所以新手使用celery很仔细的建立文件夹名字、文件夹层级、python文件名字。 所以网上的celery博客教程虽然很多,但是并不能学会使用,因为要运行起来需要以下6个方面都掌握好,博客文字很难表达清楚或者没有写全面以下6个方面。 celery消费任务不执行或者报错NotRegistered,与很多方面有关系,如果要别人排错,至少要发以下6方面的截图,因为与一下6点关系很大。 1)整个项目目录结构, 2)@task入参 ,3)celery的配置,4)celery的配置 include ,5)cmd命令行启动参数 --queues= 的值,6)用户在启动cmd命令行时候,用户所在的文件夹。 在不规范的文件夹路径下,使用celery难度很高,一般教程都没教。 [项目文件夹目录格式不规范下的celery使用演示](https://github.com/ydf0509/celery_demo) 。 此国产分布式函数调度框架 funboost python万能通用函数加速器 https://funboost.readthedocs.io/ , 从用法调用难度,用户所需代码量,超高并发性能,qps控频精确程度,支持的中间件类型,任务控制方式,稳定程度等19个方面全方位超过celery。发布性能提高1000%,消费性能提高2000%。 python万能分布式函数调度框架funboost支持python所有类型的并发模式和一切知名消息队列中间件,python函数加速器,框架包罗万象,万能编程功能宝典,一统编程思维,与业务不绑定,适用范围广。 funboot能支持celery作为中间件,用户可以使用funboost的极简api来使用celery核心调度,不用手动复杂的配置操作celery funboost 自动化操作celery https://github.com/ydf0509/funboost_support_celery_demo