2022年8月24日

Django: 导包 绝对路径 Aabsolute imports

1. 概述: Django 导包的绝对路径应该和manage.py的位置有关,具体原理尚不清楚。 2. 相关测试: 步骤1: 原Django项目的目录结构为: test_project ├── LICENSE ├── main.py └── test_django # Django项目根目录 ├── db.sqlite3 ├── manage.py # manage.py的位置 └── test_django ├── apps │ └── app1 │ ├── admin.py │ ├── apps.py │ ├── __init__.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── asgi.py ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py…
2022年8月23日

Django: 移动 settings.py 的位置 及 BASE_DIR 路径的问题

1. 概述: Django settings.py文件中BASE_DIR的定义为: BASE_DIR = Path(__file__).resolve().parent.parent __file__代表的是settings.py文件,那么Path(__file__).resolve()的结果将会是settings.py文件的绝对路径;然后取其所在目录的父目录,也就是manage.py文件所在的目录作为BASE_DIR。 若移动了settings.py的位置,BASE_DIR将不再指向原项目根目录,需要重新定义BASE_DIR。 例如: 原Django项目的目录结构为: test_project ├── LICENSE ├── main.py └── test_django # Django项目根目录 ├── db.sqlite3 ├── manage.p…
2022年8月22日

Django: 查看模型执行的SQL语句的方法及logging配置

前提: app名称为core,models.py内容如下: # coding:utf-8 from django.db import models # Create your models here. class Province(models.Model): name = models.CharField(u'省份名称',max_length=32) code = models.IntegerField(verbose_name=u'区号', unique=True) def __str__(self): return self.name class Meta: verbose_name = u'省份列表' verbose_name_plural = u'省份列表' 法I:该方法只能查看select语句,对于其他更新保存的语句不能查看,会报错 例1. res = User.objec…
2022年8月22日

Django: 外键ForeignKey介绍使用

目录 1、on_delete 2、related_name 3、related_query_name 4、外键字段的保存 这一篇笔记介绍 Django 系统 model 的外键处理,ForeignKey 以及相应的处理方法。 这是一种一对多的字段类型,表示两张表之间的关联关系。 本篇笔记的目录如下: on_delete related_name related_query_name 外键字段的保存 1、on_delete 假设有两个 application,app1 和 app2 app1 下的 某个 model 为 App1 app2 下的 某个 model 为 App2 # app1/models.py class App1(models.Model):     app2 = models.ForeignKey("app2.App2", on_delete=models.CASCADE…
2022年8月21日

Django: HINT: Add or change a related_name argument to the definition for 'auth.User.user_permissions' or 'xxx.User.user_permissions'.

(venv) user@ubuntu:~/PycharmProjects/test_project/test_django/test_django/apps/xxx$ python ../../../manage.py makemigrations 提示: HINT: Add or change a related_name argument to the definition for 'auth.User.user_permissions' or 'xxx.User.user_permissions'. 原因:models.py中定义了用户模型类,但没有在setting.py中扩展django的用户认证模型: from django.contrib.auth.models import AbstractUser # Create your models here. c…
2022年8月20日

Django: django.core.exceptions.ImproperlyConfigured: Cannot import 'app1'. Check that 'test_django.apps.app1.apps.App1Config.name' is correct.

1. 概述: Django settings.py文件中的INSTALLED_APPS中添加自定义子应用时,需要将子应用所在目录加入导报路径sys.path(如果子应用本身就在项目根路径下就不需要)。要么就要设置子应用的配置类的name值带上导包路径。 Django目录结构: test_project ├── LICENSE ├── main.py └── test_django ├── db.sqlite3 ├── manage.py └── test_django ├── apps │ └── app1 │ ├── admin.py │ ├── apps.py │ ├── __init__.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── asgi.py ├── __init__…
2022年8月19日

Django: 文件上传下载

一、Django处理文件上传File Uploads 在文件上传期间,实际文件数据存储在request.FILES中。此字典中的每个条目都是UploadedFile对象(或子类) – 上传文件的简单包装器。UploadedFile对象是对Python file对象的一个简单封装,并带有Django特定的附加功能。需要表示文件的时候,Django内部会使用这个类。UploadedFile对象拥有下列属性和方法: HttpRequest.FILES 表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data <form enctype="multipart/form-data" method="post" action="/foo/"> <input type="fi…
2022年7月31日

Django: RuntimeError: Model class test_django.apps.app1.models.xxx doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS.

1.Django项目错误提示: RuntimeError: Model class xxx.apps.users.models.User doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS. 2. 项目结构: django_project ├── LICENSE ├── main.py └── test_django ├── manage.py └── test_django ├── apps │   ├── app1 │   │   ├── admin.py │   │   ├── apps.py │   │   ├── __init__.py │   │   ├── models.py │   │   ├── tests.py │   │   ├── urls.py │   │   └── views.py │   └…