
Django
Django基础与高阶使用
Lei Gong
Powering Humanity With Code
展开
-
Django-InlineModelAdmin(含具体例子)
InlineModelAdmin类的作用在于,可以在Model A页面上编辑Model B表的字段,这只需要A和B存在外键关系。他有两个子类,区别仅仅在于使用的(前端显示)模板不同,一个垂直一个水平排序字段,使用时要直接使用这两个子类。class TabularInline (水平,类表格式)class StackedInline (垂直)具体事例:models设定:from django.db import modelsclass Author(models.Model):原创 2021-03-26 16:40:52 · 899 阅读 · 0 评论 -
Django setting ALLOWED_HOSTS
django报错:Invalid HTTP_HOST header: ‘xxx.com’. You may need to add u’xxx.com’ to ALLOWED_HOSTS解决办法:修改项目的setting.py配置文件将ALLOWED_HOSTS = []改为ALLOWED_HOSTS = ['xxx.com']再次运行可以成功访问了。setting.py中的ALLOWED_HOSTS是为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问原创 2021-01-10 16:48:50 · 1753 阅读 · 1 评论 -
Django 事务transaction使用及多个装饰器问题
django事务类库:django.db.transactionatomic提供装饰器用法当有多个装饰器时@transaction.atomic必须紧贴函数,如果其他装饰器紧贴函数虽不会报错单函数执行会出现问题例:#正确用法from django.db import transaction@classmethod@transaction.atomicdef func(request): ......#错误用法from django.db import transaction@tr原创 2020-10-24 11:27:15 · 1853 阅读 · 1 评论 -
Django admin search_fields自定义精确查询
search_fields = (u'gift_rule_id',u'user_id', u'activity_id',)//默认的查询集合def get_queryset(self, request): return super(GiftConfirmAdmin, self).get_queryset(request).all().order_by("-id")//根据关键字进行查询集合def get_search_results(self, request, queryset, sea原创 2020-08-29 16:51:04 · 2397 阅读 · 0 评论 -
Django @property用法
举例:from django.db import modelsclass Person(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) birth_date = models.DateField() def baby_boomer_status(self): "Returns the per.原创 2020-08-29 16:35:35 · 2769 阅读 · 0 评论 -
Django-model.objects.filter()条件
条件选取querySet的时候,filter表示=,exclude表示!=。querySet.distinct() 去重复__exact 精确等于 like ‘aaa’ __iexact 精确等于 忽略大小写 ilike ‘aaa’__contains 包含 like ‘%aaa%’ __icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。__gt 大于__gte 大于等于__lt 小于__lte 小于原创 2020-08-29 16:26:20 · 3773 阅读 · 0 评论 -
Django-admin展示可点击链接(url)
admin.pyclass LawyerAdmin(admin.ModelAdmin): fieldsets = [ ('Name', {'fields': ['last', 'first', 'firm_name', 'firm_url', 'school', 'year_graduated']}), ] list_display = ('last', 'first', 'school', 'year_graduated', 'firm_name', 'fir原创 2020-08-29 16:10:14 · 2263 阅读 · 0 评论 -
Django-admin-过滤器(搜索框、下拉框)
django框架的admin模块,通过list_filter提供给用户自定义分类查询的接口,并且我们可以在原有类的基础上扩展出符合自身应用场景的过滤器。定义模型以 Student 模型为准,管理类为 StudentAdminclass Student(models.Model): id = models.AutoField(primary_key=True) first_name = models.CharField( max_length=20, verb原创 2020-08-29 16:04:06 · 6689 阅读 · 0 评论 -
Django-ORM数据库查询性能(例:count与len的比较)
count()与len()性能比较Django-ORM查询queryset数据集是惰性查询的,只有使用到数据集时,ORM才会真正去执行查询语句,然后ORM会把查询到的数据集缓存到内存中,下次我们使用数据集时是从缓存中取值的。1.如果queryset数据集被使用然后缓存,我们使用queryset对象结果集count()时其底层源码如下图是用len()计算结果集长度的,所以在此场景有缓存的情况下用len()和count()来计算查询结果集的效果是一样的;2.如果只想获得queryset数据的长度而不..原创 2020-08-22 17:23:15 · 2223 阅读 · 0 评论 -
Django-model查询[为空、由某字符串开头、由某字符串结尾、包含某字符串],__isnull、__starswith、__endswith、__contains
使用属性+__isnull就可以判断此字段为空a = DatasClass.objects.filter(name__isnull=True)使用属性+__startswith可以判断属性由某字符串开始的行a = DatasClass.objects.filter(name__startswith='aaa')使用属性+__endswith可以判断属性由某字符串结束的行a = DatasClass.objects.filter(name__endswith='aaa')使用属.原创 2020-08-10 20:14:38 · 3654 阅读 · 0 评论 -
Django中manage.py migrate无效的问题
在改变Django-model中结构后,makemigrations可以识别到改变但migrate没有操作,数据库中表结构也没有改变,原因如下:在由Django-model自动生成的数据库表中有名为django_migrations的一张表表中存放了你每次migrate生成_init_文件的记录,在更改数据库之前会先查这个表,如果只改变model的结构那么此次操作生成的_init_文件名与之前相同就会放弃对数据库的操作,想要执行就要在这张表中删掉上次记录。...原创 2020-07-31 21:55:22 · 520 阅读 · 0 评论 -
Django中的异常
DJango除了会抛出Python的标准异常外还有一些框架自带的异常。Django核心异常在django.core.exceptions中:ObjectDoesNotExistFieldDoesNotExistMultipleObjectsReturnedSuspiciousOperationPermissionDeniedViewDoesNotExistMiddlewareNotUsedImproperlyConfiguredFieldErro原创 2020-07-26 18:52:38 · 413 阅读 · 0 评论 -
Django中信号signal针对model的使用
Django中实现对数据库操作的记录除了使用开源插件还可以使用信号signal独立实现信号机制-观察者模式-发布与订阅:signal配置# 文件路径:Django/myapps/__init__.pydefault_app_config = 'myapps.apps.MyAppsConfig'# 文件路径:Django/myapps/apps.pyfrom django.apps import AppConfigclass MyAppsConfig(AppConfig): nam原创 2020-07-24 23:21:34 · 533 阅读 · 0 评论 -
Django记录数据库创建、更新、删除操作开源插件推荐
github: django-simple-history安装$ pip install django-simple-history配置在Settings中添加INSTALLED_APPS = [ # ... 'simple_history',]MIDDLEWARE = [ # ... 'simple_history.middleware.HistoryRequestMiddleware',]记录在models中from django.原创 2020-07-24 22:59:10 · 986 阅读 · 0 评论 -
Django-Model模型Field选项中null和blank的区别
Option-blank设置为True时代表填写表单的时候可以为空,即在save()执行时此字段可以没有,如果字段没有就在数据库上存储一个空字符串;Option-null设置为True时会在数据库中不会在此字段写入空字符串而是写入NULL;Tips:以上在代码中设置完后需要对model重新执行makemigration、migrate来更新数据库。对于model中以下字段不能接受空字符串,若在填写表单的时候这两种类型的字段为空的话,则需要同时设置blank与null为True:IntegerF.原创 2020-07-24 22:12:21 · 393 阅读 · 0 评论 -
Django-model模型中Field属性类别及选项
参考:Django官方文档Django所使用模型中一些属性类别及选项(Field and Options)Models Fieldmodels.AutoFieldmodels.CharFieldmodels.ManyToManyFieldmodels.OneToOneFieldmodels.DateFieldmodels.DateTimeFieldmodels.DecimalFieldmodels.DurationFieldmodels.EmailFieldmodels.File原创 2020-07-24 16:45:24 · 1845 阅读 · 0 评论