Django项目中经常引入的模块

160 阅读1分钟

settings.py

INSTALLED_APPS = [
    'simpleui', # 后台美化工具
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'captcha', # 验证码
    'django_tables2', # 表格生成器
    'ckeditor', #富文本编辑器
    'ckeditor_uploader', #富文本编辑器上传图片模块
    'django_extensions', # django 扩展
    'rangefilter', # 范围过滤器
    'bootstrap4', # bootstrap
    # TODO your app
]

models.py

from django.db import models
from django.contrib.admin import display
from django.core.validators import MinValueValidator, MaxValueValidator
from django.contrib.auth.models import User
from django.db.transaction import atomic
from django.utils.html import format_html
from datetime import datetime

class T(models.Model):
    # TODO define your fields
    create_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        verbose_name = "XX管理"
        verbose_name_plural = "XX管理"
        orderding = ('-create_at',)
    
    def __str__(self) -> str:
        return self.id



admin.py

from django.contrib import admin
from django.contrib import messages
from .models import *

# Register your models here.

admin.site.site_header = 'XX'
admin.site.site_title = 'XX'

@admin.register(XXX)
class XXAdmin(admin.ModelAdmin):
    list_display = ('id',)
    list_filter = ('xxx',)
    search_fields = ('xxx', )
    actions = ['action1',]
    
    @admin.action(description='XXX')
    def xxx_action(self, request, qs):
        """
        自定义的action
        """
        # TODO 业务逻辑
        if qs.count() > 0:
            # action
            self.message_user(request, "操作成功!", messages.SUCCESS)
        else:
            self.message_user(request, "操作失败", messages.ERROR)
    
    def get_queryset(self, request):
        """
        重写queryset
        """
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        else:
            # TODO 
            return qs
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        """
        修改表单里foreinkey字段对应的选项
        """
        if db_field.name == "author":
            kwargs["initial"] = request.user
            kwargs["queryset"] = User.objects.filter(username__istartswith='admin')
        return super().formfield_for_foreignkey(db_field, request, **kwargs)

views.py

from django.shortcuts import render, get_object_or_404
from mysite.settings import BASE_DIR
from django.http import HttpResponse, JsonResponse
from django.contrib.auth.decorators import login_required

from .models import *

def my_view(request):
    """
    """

forms.py

前端显示日期

from django import forms
from django.forms.widgets import DateTimeInput

class LocationSearchForm(forms.Form):
    # 使用`{'type': 'datetime-local'}`而不是`{'type': 'datetime'}`
    start_time = forms.DateTimeField(widget=DateTimeInput(attrs={'type': 'datetime-local'}))
    end_time = forms.DateTimeField(widget=DateTimeInput(attrs={'type': 'datetime-local'}))