分类目录归档:Django-Dev

[ django-admin外键字段自动生成的增删改查按钮去除 ]


隐藏 Django Admin 自动完成外键字段(如 leader_user)后面的四个按钮(编辑、添加、删除、查看)

admin.py

@admin.register(User)
class UserAdmin(auth_admin.UserAdmin):
    form = UserAdminChangeForm
    add_form = UserAdminCreationForm
    autocomplete_fields = ['leader_user']
    filter_horizontal = (
        "groups"

< Read more >

[ django 排序 ]


django的非外键排序

两张表我需要对part里面的字段进行排序, 但是没有外键关联

class Parts(models.Model):
    ...
    ...
    ...

class LocationDrawerComponentParts(models.Model):
    location_drawer_component = models.ForeignKey(
        "cews.LocationDrawerComponent", on_delete=models.CASCADE, null=False, blank=False
   

< Read more >

[ django部署防止后台admin出现csrf ]


有时候后台admin登陆报错scrf, 就这样部署

(base) chf@chf:~/Nginx$ cat nginx-config/default.conf

# HTTP 强制跳转 HTTPS(前端)
server {
    listen 80;
    server_name frontend.chenhaifeng.top;
    return 301 https://$host$request_uri;
}

# HTTP 强制跳转 HTTPS(后端)
server {
    listen 80;
    server_name backend.chenhaifeng.top;

< Read more >

[ django自动事务源码解析 ]


1.启动django的时候

class WSGIHandler(base.BaseHandler):
    request_class = WSGIRequest

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.load_middleware() #加载中间件

1

2.发起请求的时候

一. 应该是WSGI服务-> 他调用了application(xxx,xxx)触发了call方法

import os

from django.core.as

< Read more >

[ django翻译功能 ]


django中使用多语言翻译

.
├── django_test
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
├── locale
│   └── zh_Hans
│       └── LC_MESSAGES
│           ├── django.mo
│           └── django.po
└── manage.py

修改4个地方

USE_I18N
LANGUAGES
LOCALE_PATHS
MIDD

< Read more >

[ django事务 ]


django的api接口事务执行顺序的解析

事务在api中的流程

遇到问题(创建了数据,使用其他线程,立马查询, 需要等api结束后才会真提交事务

解决方法: 使用on_commit注册事务提交后的回调

多线程
from django.db import transaction
transaction.on_commit(lambda: self._start_query_thread(log.id))

celery在数据库事务结束时触发任务

Django 的一个常见陷阱是立即触发任务,而不是等到 数据库事务的结束,这意味着 Celery 任务可能会运行 在所有更改都保存到数据库之前。

< Read more >

[ django文件上传 ]


文件上传使用drf序列化注意事项

假如文件字段的数据是

{
    "id": 1,
    "name": test,
    "file": /media/xxxxxxx/test.txt
})

序列化器要添加context={"request": request}返回的字段信息才是 (后端域名 + 文件路径)

ser = StockItemImpWorkSerializer(instance, context={"request": request})

上下文

###########
## seri

< Read more >