快速了解Django:核心概念解析与实践指南

news2024/11/16 5:48:53

title: 快速了解Django:核心概念解析与实践指南
date: 2024/5/1 20:31:41
updated: 2024/5/1 20:31:41
categories:

  • 后端开发

tags:

  • Django核心
  • 路由系统
  • 视图系统
  • ORM管理
  • 中间件
  • Web框架
  • 登录装饰器

在这里插入图片描述

第一章:Django简介

背景和发展历程:

Django是一个开放源代码的Web应用框架,由Lawrence Journal-World开发并于2005年发布。最初是为了满足新闻网站的需求而开发的,后来成为一个功能强大且灵活的Web开发框架。Django得到了全球开发者的广泛认可和使用,目前被许多知名网站和公司所采用。

选择Django的原因:

  • 高效易用:Django遵循"快速开发"的原则,提供了许多现成的工具和功能,使开发者能够快速构建功能完善的Web应用。
  • 完善的文档和社区支持:Django拥有丰富的官方文档和活跃的社区,开发者可以轻松获取帮助和资源。
  • 丰富的功能模块:Django内置了许多常用的功能模块,如用户认证、管理后台、表单处理等,减少了开发工作量。
  • 安全性强:Django具有内置的安全机制,能够有效防范常见的Web安全漏洞,如SQL注入、跨站脚本等。
  • 可扩展性好:Django支持各种第三方插件和扩展,可以根据项目需求灵活扩展功能。

核心特点和优势:

  • MTV架构:Django采用了MTV(Model-Template-View)的设计模式,将应用程序分为模型、模板和视图三层,使代码结构清晰,易于维护。
  • 强大的ORM:Django的ORM(对象关系映射)提供了方便的数据库操作方式,使开发者能够通过Python代码操作数据库,而无需编写SQL语句。
  • 自动化Admin后台:Django自带了一个强大的Admin后台管理工具,可以方便地管理网站内容和数据。
  • 灵活的URL配置:Django的URL配置非常灵活,可以通过简单的配置实现URL与视图函数的映射关系,支持正则表达式等高级匹配方式。
  • 模板系统:Django的模板系统简单易用,支持模板继承、过滤器、标签等功能,使前端开发更加高效。
  • 安全性:Django内置了一些安全特性,如跨站请求伪造(CSRF)保护、XSS(跨站脚本攻击)防护等,帮助开发者构建安全的Web应用。

第二章:环境搭建与项目创建

环境搭建:

  1. 安装Python:Django是基于Python的,首先确保你的计算机上安装了Python(推荐使用最新稳定版)。

  2. 安装Django:打开命令行(Windows用户可以使用cmd或PowerShell,Mac/Linux用户使用终端),输入以下命令安装Django:

    pip install django
    
  3. 安装数据库驱动:根据你的项目需求选择数据库,如PostgreSQL、MySQL或SQLite。安装相应的数据库驱动,如:

    pip install psycopg2-binary (for PostgreSQL)
    pip install mysqlclient (for MySQL)
    pip install django.db.backends.sqlite3 (for SQLite)
    
  4. 设置环境变量:确保Python可执行路径在系统环境变量中,或者在命令行中使用python而不是python3

创建第一个Django项目:

  1. 使用命令行,进入你希望存放项目的文件夹:

    cd /path/to/your/project/folder
    
  2. 运行Django命令创建项目:

    django-admin startproject my_first_django_project
    

    这将创建一个名为my_first_django_project的文件夹,其中包含了基本的Django项目结构。

Django项目的基本结构和文件目录: 一个典型的Django项目结构包括以下主要文件和目录:

  • my_first_django_project:项目根目录,包含项目的配置文件和管理工具。
  • my_first_django_project/settings.py:项目设置文件,包含各种配置信息。
  • my_first_django_project/urls.py:项目URL配置文件,定义了应用的URL结构。
  • my_first_django_project/wsgi.py:Web服务器接口,用于将请求传递给Django。
  • my_first_django_project/migrations:数据库迁移目录,用于管理数据库结构的变更。
  • my_first_django_project/static:静态文件目录,存放CSS、JavaScript等资源。
  • my_first_django_project/templates:模板目录,用于存放HTML和模板文件。
  • my_first_django_project manage.py:项目管理工具,用于执行各种管理任务。

my_first_django_project文件夹中,通常会有一个或多个应用(app),每个应用有自己的文件结构,但基本结构相似,包含模型(model.py)、视图(views.py)、模板(templates)和URL配置(urls.py)等。通过startapp命令可以创建新的应用。

创建项目后,启动开发服务器:

python manage.py runserver

然后在浏览器中访问http://127.0.0.1:8000/,你应该能看到Django的欢迎页面,表示项目已经成功创建并运行。

第三章:模型层(Model)

概念和作用:

在Django中,模型是与数据库交互的核心部分,用于定义数据结构和数据之间的关系。每个模型类对应数据库中的一张表,每个模型类的属性对应表中的字段。通过模型,可以轻松地进行数据库操作,包括创建、读取、更新和删除数据。

定义模型类和字段:

  1. 创建应用:首先,在Django项目中创建一个应用(app),使用manage.pystartapp命令。

  2. 定义模型类:在应用中的models.py文件中定义模型类,每个类对应一个数据表。

    from django.db import models
    
    class Product(models.Model):
        name = models.CharField(max_length=100)
        price = models.DecimalField(max_digits=8, decimal_places=2)
        description = models.TextField()
        created_at = models.DateTimeField(auto_now_add=True)
    
  3. 字段类型:Django提供了多种字段类型,如CharField(字符型)、IntegerField(整型)、DecimalField(十进制数)、TextField(文本型)、DateTimeField(日期时间型)等,适用于不同类型的数据。

  4. 字段选项:每个字段可以使用各种选项来定义其行为,如max_length(最大长度)、default(默认值)、unique(唯一性)、auto_now_add(自动添加当前时间)等。

Django的ORM及使用方法:

  1. ORM概念:对象关系映射(ORM)是一种编程技术,将数据库表映射为对象,使开发者可以通过面向对象的方式操作数据库,而无需直接编写SQL语句。

  2. 模型操作:通过模型类可以执行各种数据库操作,如创建新数据、查询数据、更新数据和删除数据。

    • 创建数据

      product = Product(name='Phone', price=999.99, description='Smartphone')
      product.save()
      
    • 查询数据

      products = Product.objects.all()  # 查询所有数据
      product = Product.objects.get(id=1)  # 根据条件查询单个数据
      
    • 更新数据

      product = Product.objects.get(id=1)
      product.price = 899.99
      product.save()
      
    • 删除数据

      product = Product.objects.get(id=1)
      product.delete()
      
  3. 查询集(QuerySet) :查询操作返回的是查询集,可以对查询集进行进一步筛选、排序和限制。

    products = Product.objects.filter(price__gte=500)  # 价格大于等于500的产品
    products = products.order_by('-price')  # 按价格降序排序
    products = products[:5]  # 只取前5个产品
    
  4. 关联关系:通过外键(ForeignKey)和多对多字段(ManyToManyField)可以定义模型之间的关联关系,实现数据表之间的关联。

    class Category(models.Model):
        name = models.CharField(max_length=50)
    
    class Product(models.Model):
        name = models.CharField(max_length=100)
        category = models.ForeignKey(Category, on_delete=models.CASCADE)
    
  5. 迁移操作:每当更改模型类时,需要生成并应用迁移以更新数据库结构。

    python manage.py makemigrations
    python manage.py migrate
    

通过模型定义和ORM操作,开发者可以轻松地管理和操作数据库中的数据,实现数据持久化和交互。

第四章:视图层(View)

作用和功能:

在Django中,视图层是处理用户请求的核心部分,它负责接收来自客户端的请求,处理业务逻辑,然后将结果呈现给用户。视图的主要功能包括接收请求参数、调用模型进行数据处理、执行逻辑操作、以及决定如何响应用户(如渲染模板,返回JSON数据等)。

编写视图函数处理用户请求:

  1. 定义视图函数:在views.py中,创建一个函数来处理特定的HTTP请求(如GET、POST等)。

    from django.shortcuts import render
    from .models import Product
    
    def product_list(request):
        products = Product.objects.all()
        return render(request, 'product_list.html', {'products': products})
    
  2. 接收请求参数:视图函数可以接收request对象,该对象包含了用户请求的所有信息,如GET参数、POST数据等。

  3. 调用模型:视图可以调用模型的方法来获取数据或执行其他操作。

  4. 响应生成:视图函数通常会返回一个响应,可能是HTML模板、JSON数据、重定向等。

视图的装饰器和通用视图的应用:

  1. 装饰器:Django提供了许多装饰器来增强视图的功能,如login_required(需要登录)、permission_required(需要特定权限)等。例如,限制只有管理员才能访问某个视图:

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def admin_view(request):
        # ...
    
  2. 通用视图:Django提供了一些高级视图,如ListViewDetailViewCreateViewUpdateViewDeleteView等,用于处理常见的CRUD(创建、读取、更新和删除)操作。这些视图简化了视图的编写,只需要定义一些额外的参数和模型关系,如:

    from django.views.generic import ListView
    
    class ProductListView(ListView):
        model = Product
        template_name = 'product_list.html'
    

通用视图通常与模板和URL配置结合使用,提供了一种更为模块化的开发方式。

通过视图层,你可以将业务逻辑与HTTP请求分离,使得代码更易于理解和维护。同时,装饰器和通用视图的使用可以提高开发效率和代码的重用性。

第五章:模板层(Template)

基本语法和特性:

Django模板语言是一种轻量级的模板语言,用于在HTML中嵌入动态数据和逻辑。基本语法包括变量、标签和过滤器:

  • 变量:用{{ variable }}表示,用于在模板中插入动态数据。
  • 标签:用{% tag %}表示,用于控制模板的逻辑,如if语句、for循环等。
  • 过滤器:用{{ variable|filter }}表示,用于对变量进行处理,如格式化日期、字符串截取等。

使用模板渲染数据:

  1. 创建模板文件:在templates目录下创建HTML文件,编写模板代码。

  2. 传递数据:在视图函数中将数据传递给模板进行渲染。

    from django.shortcuts import render
    
    def product_list(request):
        products = Product.objects.all()
        return render(request, 'product_list.html', {'products': products})
    
  3. 渲染模板:在模板中使用变量和标签来展示数据。

    <ul>
        {% for product in products %}
            <li>{{ product.name }}</li>
        {% endfor %}
    </ul>
    

模板继承、过滤器和标签的使用方法:

  1. 模板继承:可以通过继承基础模板来重用通用的页面结构,子模板可以覆盖或扩展父模板的内容。例如,创建一个基础模板base.html

    <!DOCTYPE html>
    <html>
    <head>
        <title>{% block title %}My Site{% endblock %}</title>
    </head>
    <body>
        {% block content %}
        {% endblock %}
    </body>
    </html>
    

    子模板可以继承并覆盖父模板的内容:

    {% extends 'base.html' %}
    
    {% block title %}Product List{% endblock %}
    
    {% block content %}
    <ul>
        {% for product in products %}
            <li>{{ product.name }}</li>
        {% endfor %}
    </ul>
    {% endblock %}
    
  2. 过滤器:Django提供了许多内置的过滤器,用于对数据进行处理和格式化。例如,将日期格式化为YYYY-MM-DD

    <p>{{ product.created_at|date:"Y-m-d" }}</p>
    
  3. 标签:Django模板标签用于控制模板的逻辑流程,如if语句、for循环等。例如,使用if标签根据条件显示不同内容:

    {% if product.price > 100 %}
        <p>Expensive</p>
    {% else %}
        <p>Affordable</p>
    {% endif %}
    

模板层是将动态数据呈现给用户的重要部分,模板继承、过滤器和标签的灵活运用可以使模板更具可复用性和可维护性,同时提升用户体验。

第六章:路由与URL配置

URLconf的概念和作用:

URLconf(URL configuration)是Django中用于配置URL模式和视图函数映射关系的机制。它定义了用户访问网站时不同URL路径应该由哪个视图函数来处理。URLconf通常由项目级别的URLconf和应用级别的URLconf组成,通过URL模式来匹配用户请求的URL,并将其分发给相应的视图函数处理。

配置URL模式和视图函数的映射关系:

  1. 项目级别URLconf:在项目的urls.py文件中配置项目级别的URL模式。

    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('products/', include('products.urls')),
    ]
    
  2. 应用级别URLconf:在应用的urls.py文件中配置应用级别的URL模式,并指定对应的视图函数。

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
        path('product/<int:product_id>/', views.product_detail, name='product_detail'),
    ]
    
  3. 视图函数:在应用的views.py文件中编写视图函数来处理用户请求,并返回相应的响应。

    from django.shortcuts import render
    from django.http import HttpResponse
    from .models import Product
    
    def index(request):
        return render(request, 'index.html')
    
    def product_detail(request, product_id):
        product = Product.objects.get(id=product_id)
        return render(request, 'product_detail.html', {'product': product})
    

正则表达式在URL配置中的应用:

在URLconf中,可以使用正则表达式来匹配更复杂的URL模式,以满足特定的路由需求。例如,使用正则表达式匹配特定格式的商品ID:

from django.urls import path
from . import views

urlpatterns = [
    path('product/(?P<product_id>\d+)/', views.product_detail, name='product_detail'),
]

在上面的例子中,(?P<product_id>\d+)部分使用了正则表达式,匹配一个或多个数字作为商品ID,并将匹配到的内容作为product_id参数传递给视图函数。

正则表达式的灵活性使得我们可以更精确地定义URL模式,实现更复杂的路由规则,从而提高网站的灵活性和可扩展性。

第七章:Admin后台管理

Django提供的Admin后台管理功能:

Django提供了强大的Admin后台管理功能,可以让开发者方便地管理网站的数据,包括对数据库中的模型进行增删改查操作。Admin后台管理界面自动生成,可以自定义显示的字段、过滤器、搜索框等,同时也提供了权限管理功能,可以控制不同用户的访问权限。

自定义Admin后台界面:

  1. 注册模型到Admin后台:在应用的admin.py文件中注册需要管理的模型。

    from django.contrib import admin
    from .models import Product
    
    admin.site.register(Product)
    
  2. 自定义Admin后台显示:可以通过在模型的Admin类中定义list_displaylist_filtersearch_fields等属性来自定义Admin后台界面的显示。

    from django.contrib import admin
    from .models import Product
    
    @admin.register(Product)
    class ProductAdmin(admin.ModelAdmin):
        list_display = ('name', 'price', 'stock')
        list_filter = ('category',)
        search_fields = ('name', 'description')
    

在Admin后台管理数据库中的数据:

  1. 登录Admin后台:在浏览器中访问/admin路径,并使用超级用户账号登录。
  2. 查看数据:在Admin后台界面中,可以看到注册的模型,点击进入相应的模型管理页面,可以查看、添加、编辑、删除数据库中的数据。
  3. 添加数据:在模型管理页面中,点击“Add”按钮,填写相应字段的数值,然后保存即可添加数据。
  4. 编辑数据:在模型管理页面中,点击数据行右侧的“Change”按钮,修改相应字段的数值,然后保存即可编辑数据。
  5. 删除数据:在模型管理页面中,勾选要删除的数据行左侧的复选框,然后点击页面底部的“Delete selected”按钮,确认删除即可删除数据。

通过Admin后台管理功能,开发者可以方便地管理数据库中的数据,快速进行数据的增删改查操作,提高开发效率和管理便利性。

第八章:表单处理与验证

Django表单的概念和作用:

在Web开发中,表单是用户与网站进行交互的重要方式,用户可以通过表单向网站提交数据。Django的表单功能可以帮助开发者快速创建表单、处理用户提交的数据,并进行验证。表单类定义了表单的字段和验证规则,可以在前端页面渲染表单,接收用户输入的数据,然后进行处理和验证。

创建表单类和处理用户提交的表单数据:

  1. 创建表单类:在Django应用中的forms.py文件中定义表单类,继承自forms.Formforms.ModelForm

    from django import forms
    
    class ContactForm(forms.Form):
        name = forms.CharField(label='Your Name', max_length=100)
        email = forms.EmailField(label='Your Email')
        message = forms.CharField(widget=forms.Textarea)
    
  2. 渲染表单到前端页面:在视图函数中实例化表单类,并传递给前端页面进行渲染。

    from django.shortcuts import render
    from .forms import ContactForm
    
    def contact_view(request):
        form = ContactForm()
        return render(request, 'contact.html', {'form': form})
    
  3. 处理用户提交的表单数据:在视图函数中通过POST请求获取用户提交的数据,实例化表单类并传入request.POST,然后进行数据验证和处理。

    def contact_view(request):
        if request.method == 'POST':
            form = ContactForm(request.POST)
            if form.is_valid():
                # 处理有效的表单数据
            else:
                # 处理表单验证失败的情况
        else:
            form = ContactForm()
        return render(request, 'contact.html', {'form': form})
    

表单验证和错误处理的方法:

  1. 表单验证:Django的表单类提供了各种字段验证器,可以在字段定义时设置验证规则,也可以在表单类中定义clean_<field_name>()方法进行自定义验证。
  2. 错误处理:在前端页面中可以通过{{ form.field_name.errors }}显示字段验证错误信息,也可以通过{{ form.non_field_errors }}显示表单级别的错误信息。在视图函数中,可以通过form.errors获取所有错误信息。

通过Django的表单处理与验证功能,开发者可以轻松创建表单、处理用户提交的数据,并进行有效的数据验证和错误处理,保证用户输入的数据符合要求,提高网站的安全性和用户体验。

第九章:用户认证与权限控制

Django中用户认证和权限控制的机制:

Django框架内置了一套用户认证系统,提供了用户注册、登录、注销、权限控制等功能。用户认证系统主要包括User模型、用户组(Groups)、权限(Permissions)等概念。

  1. User模型:Django内置的User模型定义了用户的基本信息,如用户名、密码、邮箱等。可以通过django.contrib.auth.get_user_model()获取用户模型,以便在应用中使用。
  2. 用户注册:通过定义一个表单类来处理用户注册时提交的数据,然后在视图函数中实例化该表单,并验证用户输入的数据。注册成功后,可以将用户数据保存到数据库中。
  3. 用户登录:登录过程包括验证用户名和密码。Django提供了authenticate()函数来验证用户身份,验证成功后,可以使用login()函数将用户登录状态保存在会话(Session)中。
  4. 用户注销:用户注销功能可以通过logout()函数实现,该函数会清除用户会话中的信息,从而结束用户的登录状态。
  5. 权限控制:Django通过用户、用户组、权限三者之间的关系来实现权限控制。权限分为对象权限和组权限,用户可以通过加入用户组来获得组权限,也可以直接分配对象权限。

如何实现用户注册、登录和注销功能:

  1. 用户注册:创建一个注册表单,并在视图函数中处理表单提交的数据,验证无误后保存用户信息到数据库,并创建用户会话。
  2. 用户登录:创建一个登录表单,并在视图函数中处理表单提交的数据,验证用户身份后使用login()函数保存登录状态。
  3. 用户注销:在视图函数中实现注销逻辑,调用logout()函数清除会话信息。

如何管理用户权限和角色:

  1. 用户组管理:通过Django的管理界面可以创建和管理用户组,并为用户分配组成员身份。
  2. 权限分配:在Django中,权限可以通过模型权限和中间件权限两种方式进行分配。模型权限关联到Django的模型上,中间件权限是全局的权限,可以被特定的用户或用户组继承。
  3. 权限验证:在视图函数中,可以通过has_perm()方法来检查用户是否有执行某操作的权限,也可以在模板中通过{% if user.has_perm('app_label.model_name') %}来判断权限。

通过Django的用户认证与权限控制机制,开发者可以为网站提供安全、灵活的用户管理方案,确保只有授权用户才能访问特定的资源和操作,从而保护网站的数据和功能安全。

第十章:RESTful API开发

RESTful API的概念和设计原则:

REST(Representational State Transfer)是一种设计风格,用于构建分布式系统和网络应用。RESTful API是符合REST架构风格的API,具有以下设计原则:

  1. 基于资源:将数据和功能看作资源,每个资源通过唯一的URL进行标识。
  2. 统一接口:使用统一的接口进行交互,如HTTP方法(GET、POST、PUT、DELETE等)。
  3. 无状态性:每个请求都包含足够的信息来处理,服务器不保存客户端的状态。
  4. 资源关系:通过URL表示资源之间的关系,如嵌套URL表示资源之间的层级关系。
  5. 状态转移:客户端通过操作资源的表现形式来进行状态转移,如GET获取资源、POST创建资源等。

如何使用Django REST framework构建API接口:

  1. 安装Django REST framework:通过pip安装djangorestframework库。
  2. 创建序列化器(Serializers):定义资源的序列化和反序列化规则。
  3. 创建视图集(ViewSets):定义处理API请求的视图集,包括列表、详情、创建、更新、删除等操作。
  4. 配置URL路由:将视图集映射到URL,并配置路由。
  5. 配置权限和认证:通过Django REST framework提供的权限和认证类来控制API的访问权限。

API的认证、权限控制和版本管理:

  1. 认证:Django REST framework提供了多种认证方式,如基本认证、Token认证、Session认证、JWT认证等。可以在视图或全局配置中设置认证类。
  2. 权限控制:通过Django REST framework提供的权限类来控制用户对API资源的访问权限,如IsAuthenticated、IsAdminUser、AllowAny等。
  3. 版本管理:可以通过URL版本控制或Accept头部版本控制来管理API的版本。在Django REST framework中,可以使用rest_framework.versioning模块来实现版本管理。

通过使用Django REST framework构建RESTful API,可以快速、灵活地开发API接口,提供给前端应用或第三方服务使用。同时,通过认证、权限控制和版本管理,可以确保API的安全性和稳定性,为用户提供良好的使用体验。

第十一章:性能优化与安全防护

常见的性能优化技巧和最佳实践:

  1. 缓存:使用缓存可以减少数据库查询和计算量,提高应用的性能。可以使用Django缓存框架来实现缓存,如Memcached、Redis、FileBasedCache等。
  2. 静态文件:使用CDN(内容分发网络)来加速静态文件的访问,减少服务器压力。
  3. 数据库优化:使用数据库索引、分表、分库等技术来优化数据库性能。
  4. 异步处理:将一些耗时的操作放到异步队列中处理,避免阻塞主线程。
  5. 代码优化:使用Django调试工具和Python profiler来分析代码的性能瓶颈,进行优化。

防范常见的Web安全攻击:

  1. SQL注入:使用参数化查询和预编译语句来防止SQL注入攻击。
  2. XSS:使用Django的安全过滤器和CSP(内容安全策略)来防止XSS攻击。
  3. CSRF:使用Django的CSRF保护机制来防止CSRF攻击。
  4. Clickjacking:使用X-Frame-Options头部和Frame-Ancestors CSP指令来防止Clickjacking攻击。
  5. DoS/DDoS:使用流量控制和限速来防止DoS/DDoS攻击。

对Django应用进行性能测试和安全审计:

  1. 性能测试:使用Django调试工具和Python profiler来分析代码的性能瓶颈,进行优化。可以使用Apache Benchmark(ab)、Locust等工具来进行性能测试。
  2. 安全审计:使用Django的安全过滤器和Python安全工具库来检查代码的安全性,进行修复。可以使用OWASP ZAP、Burp Suite等工具来进行安全审计。

通过对Django应用进行性能优化和安全防护,可以确保应用的高性能和安全性,为用户提供良好的使用体验。同时,通过定期的性能测试和安全审计,可以及时发现和修复潜在的问题,提高应用的稳定性和可靠性。

附录:常见问题解答和进阶学习资源

AD:首页 | 一个覆盖广泛主题工具的高效在线平台(amd794.com)

常见问题解答:

  1. Q:如何处理Django中的大文件上传? A:可以使用Django的FileField配合如django-storages库(如Amazon S3、Google Cloud Storage等)处理大文件存储。
  2. Q:如何在Django中实现用户权限管理? A:使用Django的内置权限系统(如permissions模块)或第三方库如django-guardian进行更细粒度的权限控制。
  3. Q:如何处理数据库迁移问题? A:确保每次改动数据库结构后,使用makemigrationsmigratesyncdb正确地更新迁移文件,并在生产环境中使用--fake选项模拟迁移。

进阶学习资源:

  1. 书籍:

    • Pro Django: Expert Solutions for Real-World Django Development
    • Django for Beginners: A Hands-On Guide to Mastering Django 3.x
    • Django 3.2 Unofficial Documentation
  2. 在线课程:

    • Django官方文档(https://docs.djangoproject.com/)
    • Udemy上的《Django 3.x - The Complete Guide for Beginners》
    • Coursera上的《Full Stack Web Development with Django》
  3. 博客和社区:

    • Django Bloggers(https://djangobloggers.com/)
    • Django Documentation’s Blog(https://www.djangoproject.com/weblog/)
    • Django Girls(https://djangogirls.org/)
  4. GitHub项目和库:

    • Django官方示例项目(https://github.com/django/django/tree/main/django/contrib/samples)
    • Django-CRUD-App(https://github.com/AndrewIngram/django-crud-app)
  5. 技术论坛和问答平台:

    • Django官方论坛(https://forum.djangoproject.com/)
    • Stack Overflow(https://stackoverflow.com/questions/tagged/django)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1638062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pyinstaller打包pytorch和transformers程序

记录使用pyinstaller打包含有pytorch和transformers库的程序时遇到的问题和解决方法。 环境和版本信息 操作系统&#xff1a;Windows 11 Python&#xff1a;3.10.12 pyinstaller&#xff1a;5.13.0 torch&#xff1a;2.2.2 transformers&#xff1a;4.40.1 打包过程和问…

MATLAB 数据导入

MATLAB 数据导入&#xff08;ImportData&#xff09; 在MATLAB中导入数据意味着从外部文件加载数据。该importdata功能允许加载不同格式的各种数据文件。它具有以下五种形式 序号 功能说明 1 A importdata(filename) 从filename表示的文件中将数据加载到数组A中。 2 A i…

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube 前言 本教程基于群晖的NAS设备DS423的docker功能进行搭建&#xff0c;DSM版为 7.2.1-69057 Update 5。 简介 MetaTube 是一个媒体服务器插件&#xff0c;主要用于 Emby 和 Jellyfin 媒体服务器。它的主要功能是从互…

unity制作app(1)--登录 注册 界面

把学到的知识投入到生产中反而是一件简单的事情&#xff01; 1.调整canvas的形状&#xff0c;这里和camera没有任何关系! overlay&#xff01; 2.既然自适应&#xff0c;空间按钮的位置比例就很重要了&#xff01; game窗口中新增720*1280的分辨率&#xff01; 3.再回到can…

11【PS Blender 作图】场景作图 景深

【问题背景】 看下图,是一个插画师的作图,是不是好像现实场景;合理利用景深,让画面好像是3D现实场景 那么如何才能完成这样让人身临其境的画面呢? 大体有两个方法: 【1】2D插画,合理利用景深;如用PS画图,在画图的时候注意 画面构图,让2D的画面,看起来像3D 缺点…

神经网络参数初始化

一、引入 在深度学习和机器学习的世界中&#xff0c;神经网络是构建智能系统的重要基石&#xff0c;参数初始化是神经网络训练过程中的一个重要步骤。在构建神经网络时&#xff0c;我们需要为权重和偏置等参数赋予初始值。对于偏置&#xff0c;通常可以将其初始化为0或者较小的…

6.python网络编程

文章目录 1.生产者消费者-生成器版2.生产者消费者--异步版本3.客户端/服务端-多线程版4.IO多路复用TCPServer模型4.1Select4.2Epoll 5.异步IO多路复用TCPServer模型 1.生产者消费者-生成器版 import time# 消费者 def consumer():cnt yieldwhile True:if cnt < 0:# 暂停、…

2024年五一数学建模竞赛C题论文首发

基于随机森林的煤矿深部开采冲击地压危险预测 摘要 煤炭作为中国重要的能源和工业原料&#xff0c;其开采活动对国家经济的稳定与发展起着至关重要的作用。本文将使用题目给出的数据探索更为高效的数据分析方法和更先进的监测设备&#xff0c;以提高预警系统的准确性和可靠性…

键盘更新计划

作为 IT 搬砖人&#xff0c;一直都认为键盘没有什么太大关系。 每次都是公司发什么用什么。 但随着用几年后&#xff0c;发现现在的键盘经常出问题&#xff0c;比如说调节音量的时候通常莫名其妙的卡死&#xff0c;要不就是最大音量要不就是最小音量。 按键 M 不知道什么原因…

服务运营 | 精选:花钱买开心!体验型服务设计中的调度优化

编者按 在体验经济时代&#xff0c;企业逐渐从提供产品转变为提供体验&#xff0c;只有了解顾客的行为&#xff0c;才能对服务进行更好的设计&#xff0c;从而提高顾客的体验和忠诚度&#xff0c;实现企业与顾客的双赢。如何优化顾客体验便是体验型服务设计&#xff08;Experie…

通过自然语言处理执行特定任务的AI Agents;大模型控制NPC执行一系列的动作;个人化的电子邮件助手Panza

✨ 1: OpenAgents 通过自然语言处理执行特定任务的AI代理 OpenAgents是一个开放平台&#xff0c;旨在使语言代理&#xff08;即通过自然语言处理执行特定任务的AI代理&#xff09;的使用和托管变得更加便捷和实用。它特别适合于日常生活中对数据分析、工具插件获取和网络浏览…

鹏哥C语言复习——内存函数

目录 一.memcpy函数 二.memmove函数 三.memset函数 四.memcmp函数 一.memcpy函数 该函数是针对内存块进行拷贝操作&#xff0c;mem即为memory&#xff0c;是内存的意思&#xff1b;cpy就是copy&#xff0c;是拷贝的意思 int arr[] { 1,2,3,4,5,6,7,8,9,10 }; int arr2[2…

C++中的右值引用和移动语义

1 左值引用和右值引用 传统的C语法中就有引用的语法&#xff0c;而C11中新增了的右值引用语法特性&#xff0c;所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用&#xff0c;都是给对象取别名。 什么是左值&#xff1f;什么是左值引用&#xff1f; 左…

初探 Google 云原生的CICD - CloudBuild

大纲 Google Cloud Build 简介 Google Cloud Build&#xff08;谷歌云构建&#xff09;是谷歌云平台&#xff08;Google Cloud Platform&#xff0c;GCP&#xff09;提供的一项服务&#xff0c;可帮助开发人员以一致和自动化的方式构建、测试和部署应用程序或构件。它为构建和…

【Java探索之旅】包管理精粹 Java中包的概念与实践

文章目录 &#x1f4d1;前言一、封装1.1 封装的概念1.2 访问限定修饰符 二、封装扩展&#xff08;包&#xff09;2.1 包的概念2.2 带入包中的类2.3 自定义包2.4 常见的包 &#x1f324;️全篇总结 &#x1f4d1;前言 在Java编程中&#xff0c;封装是面向对象编程的核心概念之一…

PyCharm 2024新版图文安装教程(python环境搭建+PyCharm安装+运行测试+汉化+背景图设置)

名人说&#xff1a;一点浩然气&#xff0c;千里快哉风。—— 苏轼《水调歌头》 创作者&#xff1a;Code_流苏(CSDN) 目录 一、Python环境搭建二、PyCharm下载及安装三、解释器配置及项目测试四、PyCharm汉化五、背景图设置 很高兴你打开了这篇博客&#xff0c;如有疑问&#x…

Swift - 可选项(Optional)

文章目录 Swift - 可选项&#xff08;Optional&#xff09;1. 可选项&#xff08;Optional&#xff09;2. 强制解包&#xff08;Forced Unwrapping&#xff09;3. 判断可选项是否包含值4. 可选项绑定&#xff08;Optional Binding&#xff09;5. 等价写法6. while循环中使用可选…

【linuxC语言】stat函数

文章目录 前言一、stat函数二、示例代码总结 前言 在Linux系统编程中&#xff0c;stat() 函数是一个非常重要的工具&#xff0c;用于获取文件的元数据信息。无论是在系统管理、文件处理还是应用开发中&#xff0c;都可能会用到 stat() 函数。通过调用 stat() 函数&#xff0c;…

简约大气的全屏背景壁纸导航网源码(免费)

简约大气的全屏背景壁纸导航网模板 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html> <html lang"zh-CN"> <!--版权归孤独 --> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible…

用LM Studio搭建微软的PHI3小型语言模型

什么是 Microsoft Phi-3 小语言模型&#xff1f; 微软Phi-3 模型是目前功能最强大、最具成本效益的小型语言模型 &#xff08;SLM&#xff09;&#xff0c;在各种语言、推理、编码和数学基准测试中优于相同大小和更高大小的模型。此版本扩展了客户高质量模型的选择范围&#x…