Home Backend Development Python Tutorial Backend management system skills in the Django framework (Part 2)

Backend management system skills in the Django framework (Part 2)

Jun 17, 2023 pm 07:09 PM
Skill django Backstage management

Backend management system skills in the Django framework (Part 2)

In the previous article, we introduced some backend management system skills in the Django framework, such as how to customize the background page layout, how to Custom filters, how to customize actions, etc. This article will continue to introduce more practical tips to help you better use the Django framework.

  1. How to deal with the default value of ForeignKey in Model

In Django Model, ForeignKey is a very practical field type. However, when we create a new Model instance, the ForeignKey type field needs to specify an instance of the related Model in order to be saved successfully. If not specified, NULL values ​​will be saved by default. In some cases, we may want the ForeignKey type field to be saved in a default association instance. In this case, we can use Django's get_or_create method.

For example, we have a Product Model and define a ProductCategory ForeignKey field for it. We hope that when we create a new Product instance, it will automatically associate a default Category instance. You can add the following code to the Model :

1

2

3

4

5

6

7

8

9

10

class Product(models.Model):

    name = models.CharField(max_length=100)

    category = models.ForeignKey(ProductCategory, default=get_default_category)

 

   def get_default_category():

        """

        返回默认的ProductCategory实例或者创建一个新的实例

        """

        category, _ = ProductCategory.objects.get_or_create(name='Default Category')

        return category

Copy after login

In this way, when we create a new Product instance, a ProductCategory instance named "Default Category" will be automatically associated by default.

  1. How to restrict a Model in the background management system to only create one instance

In some cases, we may want a Model to create only one instance, such as in a website Global Settings. At this time, you can use Django's SingletonModel library, which provides a BaseSingletonModel that allows us to easily convert any Model to a Singleton Model.

For example, we have a GlobalSettings Model and hope that it can only create one instance. It can be defined like this:

1

2

3

4

5

6

from singleton_models.models import SingletonModel

 

class GlobalSettings(SingletonModel):

    site_name = models.CharField(max_length=100, default='')

    site_url = models.URLField(default='')

    # 其他全局设置字段

Copy after login

After defining it, in the background management system, we can only create and edit A GlobalSettings instance.

  1. How to add custom middleware for the background management system

In the Django framework, middleware is an interceptor used to process requests and responses. It can handle the request or response before the request reaches the view function, after the view function handles the request, and before the response is sent to the client. Among them, adding custom middleware to the background management system allows us to easily intercept and process the administrator's operations.

For example, if we want the administrator to need to enter a secondary confirmation password when making certain modification operations, we can add the following code to the settings.py file of the Django project:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

MIDDLEWARE = [

    # 默认的中间件

    'django.middleware.security.SecurityMiddleware',

    'django.contrib.sessions.middleware.SessionMiddleware',

    # 自定义中间件

    'myapp.middleware.ConfirmPasswordMiddleware',

    'django.middleware.common.CommonMiddleware',

    'django.middleware.csrf.CsrfViewMiddleware',

    'django.contrib.auth.middleware.AuthenticationMiddleware',

    'django.contrib.messages.middleware.MessageMiddleware',

    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

 

CONFIRMED_ACTIONS = (

    'myapp.views.EditProductView',

    'myapp.views.DeleteProductView',

)

 

class ConfirmPasswordMiddleware:

    def __init__(self, get_response):

        self.get_response = get_response

 

    def __call__(self, request):

        # 根据请求的URL判断是哪个视图函数,如果是CONFIRMED_ACTIONS中的视图函数,需要做二次确认

        view_func = resolve(request.path_info).func

        if view_func and view_func.__module__ + "." + view_func.__name__ in CONFIRMED_ACTIONS:

            if not request.session.get('password_confirmed', False):

                # 没有输入二次确认密码,跳转到输入页面

                return redirect(reverse('confirm-password'))

 

        response = self.get_response(request)

 

        return response

Copy after login

The above code , we define a ConfirmPasswordMiddleware, which intercepts the request before it reaches the view function and determines whether a secondary confirmation password is required. CONFIRMED_ACTIONS is a list of view functions that require secondary confirmation. We can add or delete them as needed. In the view function, we can query whether the current user has entered the secondary confirmation password through request.session.get('password_confirmed', False).

  1. How to add a serializer to the Model of the background management system

In the Django framework, Serializer is a class used to convert the Model into a dictionary or JSON format. Adding a serializer to the backend management system allows us to easily convert the Model to JSON format and output it.

For example, we have a Product Model and want to convert it to JSON format and output it in the background management system. It can be defined like this:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

from django.contrib import admin

from django.core.serializers import serialize

from django.http import HttpResponse

 

class ProductAdmin(admin.ModelAdmin):

    # 列表视图显示的字段列表

    list_display = ('name', 'price', 'category')

 

    # 自定义action函数

    def export_as_json(self, request, queryset):

        response = HttpResponse(content_type="application/json")

        serializers.serialize("json", queryset, stream=response)

        return response

    export_as_json.short_description = "导出为JSON"

 

    # 自定义函数按钮

    change_list_template = 'admin/myapp/product/list.html'

 

    def get_urls(self):

        urls = super().get_urls()

        my_urls = [

            path('my_view/', self.my_view),

        ]

        return my_urls + urls

 

    def my_view(self, request):

        data = serialize('json', Product.objects.all())

        return JsonResponse(data, safe=False)

 

admin.site.register(Product, ProductAdmin)

Copy after login

In the above code, we add An export_as_json function is provided, which can convert the currently selected Model instance into JSON format and output it to the client. At the same time, we also added a my_view function to ProductAdmin, which can directly query all Model instances and convert them into JSON format output.

Summary

The background management system of the Django framework is an important tool for developing web applications. It provides many ready-made functions that allow us to easily manage Model instances, batch modifications and deletions. In this article, we introduce some practical tips for the Django framework backend management system, including how to handle the default value of ForeignKey in the Model, how to limit a Model in the backend management system to only create one instance, and how to add customization to the backend management system. Define middleware and how to add serializers to the Model of the backend management system. Through the use of these techniques, we can better use the background management system of the Django framework.

The above is the detailed content of Backend management system skills in the Django framework (Part 2). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Win11 Tips Sharing: Skip Microsoft Account Login with One Trick Win11 Tips Sharing: Skip Microsoft Account Login with One Trick Mar 27, 2024 pm 02:57 PM

Win11 Tips Sharing: One trick to skip Microsoft account login Windows 11 is the latest operating system launched by Microsoft, with a new design style and many practical functions. However, for some users, having to log in to their Microsoft account every time they boot up the system can be a bit annoying. If you are one of them, you might as well try the following tips, which will allow you to skip logging in with a Microsoft account and enter the desktop interface directly. First, we need to create a local account in the system to log in instead of a Microsoft account. The advantage of doing this is

A must-have for veterans: Tips and precautions for * and & in C language A must-have for veterans: Tips and precautions for * and & in C language Apr 04, 2024 am 08:21 AM

In C language, it represents a pointer, which stores the address of other variables; & represents the address operator, which returns the memory address of a variable. Tips for using pointers include defining pointers, dereferencing pointers, and ensuring that pointers point to valid addresses; tips for using address operators & include obtaining variable addresses, and returning the address of the first element of the array when obtaining the address of an array element. A practical example demonstrating the use of pointer and address operators to reverse a string.

What are the tips for novices to create forms? What are the tips for novices to create forms? Mar 21, 2024 am 09:11 AM

We often create and edit tables in excel, but as a novice who has just come into contact with the software, how to use excel to create tables is not as easy as it is for us. Below, we will conduct some drills on some steps of table creation that novices, that is, beginners, need to master. We hope it will be helpful to those in need. A sample form for beginners is shown below: Let’s see how to complete it! 1. There are two methods to create a new excel document. You can right-click the mouse on a blank location on the [Desktop] - [New] - [xls] file. You can also [Start]-[All Programs]-[Microsoft Office]-[Microsoft Excel 20**] 2. Double-click our new ex

VSCode Getting Started Guide: A must-read for beginners to quickly master usage skills! VSCode Getting Started Guide: A must-read for beginners to quickly master usage skills! Mar 26, 2024 am 08:21 AM

VSCode (Visual Studio Code) is an open source code editor developed by Microsoft. It has powerful functions and rich plug-in support, making it one of the preferred tools for developers. This article will provide an introductory guide for beginners to help them quickly master the skills of using VSCode. In this article, we will introduce how to install VSCode, basic editing operations, shortcut keys, plug-in installation, etc., and provide readers with specific code examples. 1. Install VSCode first, we need

PHP programming skills: How to jump to the web page within 3 seconds PHP programming skills: How to jump to the web page within 3 seconds Mar 24, 2024 am 09:18 AM

Title: PHP Programming Tips: How to Jump to a Web Page within 3 Seconds In web development, we often encounter situations where we need to automatically jump to another page within a certain period of time. This article will introduce how to use PHP to implement programming techniques to jump to a page within 3 seconds, and provide specific code examples. First of all, the basic principle of page jump is realized through the Location field in the HTTP response header. By setting this field, the browser can automatically jump to the specified page. Below is a simple example demonstrating how to use P

Win11 Tricks Revealed: How to Bypass Microsoft Account Login Win11 Tricks Revealed: How to Bypass Microsoft Account Login Mar 27, 2024 pm 07:57 PM

Win11 tricks revealed: How to bypass Microsoft account login Recently, Microsoft launched a new operating system Windows11, which has attracted widespread attention. Compared with previous versions, Windows 11 has made many new adjustments in terms of interface design and functional improvements, but it has also caused some controversy. The most eye-catching point is that it forces users to log in to the system with a Microsoft account. For some users, they may be more accustomed to logging in with a local account and are unwilling to bind their personal information to a Microsoft account.

Tips for using Laravel form classes: ways to improve efficiency Tips for using Laravel form classes: ways to improve efficiency Mar 11, 2024 pm 12:51 PM

Forms are an integral part of writing a website or application. Laravel, as a popular PHP framework, provides rich and powerful form classes, making form processing easier and more efficient. This article will introduce some tips on using Laravel form classes to help you improve development efficiency. The following explains in detail through specific code examples. Creating a form To create a form in Laravel, you first need to write the corresponding HTML form in the view. When working with forms, you can use Laravel

In-depth understanding of function refactoring techniques in Go language In-depth understanding of function refactoring techniques in Go language Mar 28, 2024 pm 03:05 PM

In Go language program development, function reconstruction skills are a very important part. By optimizing and refactoring functions, you can not only improve code quality and maintainability, but also improve program performance and readability. This article will delve into the function reconstruction techniques in the Go language, combined with specific code examples, to help readers better understand and apply these techniques. 1. Code example 1: Extract duplicate code fragments. In actual development, we often encounter reused code fragments. At this time, we can consider extracting the repeated code as an independent function to

See all articles