外贸公司网站如何做推广,浦江网站建设,可以免费追剧的app,最好建网站系统的软件#x1f31f; Django后端架构开发#xff1a;后台管理与会话技术详解 #x1f539; 后台管理#xff1a;自定义模型类
Django的后台管理系统提供了强大的模型管理功能#xff0c;你可以通过自定义模型类来控制模型在后台管理界面的显示和操作。自定义模型类通过继承admin… Django后端架构开发后台管理与会话技术详解 后台管理自定义模型类
Django的后台管理系统提供了强大的模型管理功能你可以通过自定义模型类来控制模型在后台管理界面的显示和操作。自定义模型类通过继承admin.ModelAdmin类实现可以指定显示的字段、过滤条件、搜索框等功能。
from django.contrib import admin
from myapp.models import MyModelclass MyModelAdmin(admin.ModelAdmin):# 在列表页面中显示哪些字段list_display (name, created_at, updated_at)# 允许在后台添加搜索功能search_fields (name,)# 添加过滤器list_filter (status,)# 添加字段排序ordering (-created_at,)# 自定义显示的表单fields (name, description, status, created_at)admin.site.register(MyModel, MyModelAdmin)代码解析
list_display控制模型在后台列表视图中显示的字段。(name, created_at, updated_at)会在列表中展示名称、创建时间和更新时间。search_fields定义可搜索的字段。在后台管理页面中会添加一个搜索框来根据name字段的内容进行搜索。list_filter为列表视图添加过滤器使用户可以根据status字段进行过滤。ordering设置默认的排序方式。(-created_at,)表示按创建时间降序排列。fields控制在编辑页面上显示的字段顺序和内容。
通过自定义模型类你可以根据需求调整后台管理界面的展示方式和功能使得数据管理更加高效和灵活。 后台管理语法简介处理多关系模型
Django后台管理系统支持处理复杂的多关系模型通过InlineModelAdmin类可以实现对相关模型的嵌套编辑。这对于处理一对多和多对多关系特别有用。
from django.contrib import admin
from myapp.models import ParentModel, ChildModelclass ChildModelInline(admin.TabularInline):model ChildModelextra 1 # 默认显示的空表单数class ParentModelAdmin(admin.ModelAdmin):inlines [ChildModelInline]admin.site.register(ParentModel, ParentModelAdmin)代码解析
ChildModelInline定义了一个嵌套的子模型类用于在ParentModel的编辑界面中展示ChildModel的表单。extra指定在添加新记录时默认显示的子模型表单数。这对于批量添加相关数据很有用。inlines将ChildModelInline添加到ParentModelAdmin的inlines属性中使得在编辑ParentModel时可以同时编辑相关的ChildModel数据。
这种方式允许你在后台管理系统中更直观地处理复杂的数据关系提高了数据管理的便捷性和一致性。 admin管理重写后台模板
Django后台系统的默认模板可以根据需要进行重写。重写后台模板使得你可以自定义管理界面的外观例如自定义登录页面或修改模型列表的显示方式。
!-- templates/admin/login.html --
{% extends admin/base_site.html %}
{% block content %}h1欢迎来到自定义后台登录页面/h1{{ block.super }}
{% endblock %}代码解析
templates/admin/login.html在templates目录下创建一个新的模板文件来重写默认的登录页面。{% extends admin/base_site.html %}继承Django后台管理的基础模板以确保新的模板仍然保持后台管理的基本结构。{% block content %}重写content块以添加自定义内容。{{ block.super }}保留了原有的内容。
这种方法允许你在不修改Django核心代码的情况下个性化后台管理界面的外观和功能从而符合项目的特定需求。 admin后台管理管理简单模型
对于简单模型Django后台的默认配置通常能够满足需求。你只需将模型注册到admin站点后台管理系统会自动生成相应的管理界面。
from django.contrib import admin
from myapp.models import SimpleModeladmin.site.register(SimpleModel)代码解析
admin.site.register(SimpleModel)将SimpleModel注册到Django后台管理系统中使其在后台管理界面中可见和可操作。
这种基本的注册方式适用于那些不需要复杂定制的模型它能够快速实现后台管理功能省去额外的配置工作。 admin后台管理配置创建管理员账号
创建管理员账号是使用Django后台管理系统的第一步可以通过命令行工具来创建一个超级用户。超级用户拥有所有权限可以访问和管理系统中的所有内容。
python manage.py createsuperuser代码解析
运行createsuperuser命令后系统会提示输入用户名、电子邮件和密码。完成后管理员账号即被创建。
创建管理员账号之后你可以使用该账号登录到后台管理系统进行系统配置、数据管理等操作。 admin后台管理自定义模型批量管理
在Django后台管理系统中你可以通过自定义ModelAdmin类来实现批量操作例如批量删除或批量更新。这对处理大量数据时非常有用。
from django.contrib import admin
from myapp.models import MyModelclass MyModelAdmin(admin.ModelAdmin):actions [delete_selected]def delete_selected(self, request, queryset):# 自定义批量删除操作num_deleted, _ queryset.delete()self.message_user(request, f成功删除 {num_deleted} 项数据)admin.site.register(MyModel, MyModelAdmin)代码解析
actions指定自定义的批量操作例如批量删除。delete_selected实现了一个自定义的批量删除操作。queryset.delete()用于删除选中的数据。self.message_user向用户显示操作结果的消息。
通过这种方式你可以在后台管理系统中实现灵活的数据处理功能提高数据管理的效率。 admin后台管理自定义管理类
Django后台管理类可以通过继承admin.ModelAdmin并重写其方法来实现自定义的管理逻辑。例如你可以定制模型的显示字段、排序方式和编辑表单。
from django.contrib import admin
from myapp.models import MyModelclass MyModelAdmin(admin.ModelAdmin):list_display (name, status)list_editable (status,) # 允许在列表页直接编辑状态字段ordering (-created_at,) # 按创建时间降序排列fields (name, description, status)admin.site.register(MyModel, MyModelAdmin)代码解析
list_display指定在模型列表页中显示的字段例如name和status。list_editable允许在列表页中直接编辑status字段这对于快速编辑数据非常有用。ordering设置默认的排序方式(-created_at,)表示按创建时间降序排列。fields定义编辑表单中显示的字段。
这种配置方式允许你自定义后台管理系统的显示和编辑功能满足具体的业务需求。 会话技术全面解析 会话技术Session简介
在Web应用中会话Session用于在用户和服务器之间存储和传递数据。Django提供了内置的会话管理机制可以在视图中存储和访问会话数据。
from django.http import HttpResponsedef set_session(request):request.session[key] valuereturn HttpResponse(会话数据已存储)def get_session(request):value request.session.get(key, 默认值)return HttpResponse(f会话数据{value})代码解析
request.session[key] value在会话中存储数据键为key值为value。request.session.get(key, 默认值)从会话中获取数据如果键不存在则返回默认值默认值。
Django的会话机制简化了用户会话数据的存储和访问提供了易用的API来操作会话数据。 会话技术应用加密cookie
Django的会话数据通常存储在加密的cookie中这确保了数据在客户端存储时的安全性。你可以通过配置选项来增强cookie的安全性例如仅通过HTTPS传输cookie。
# settings.py
SESSION_COOKIE_SECURE True # 仅在HTTPS连接中传输cookie
SESSION_COOKIE_HTTPONLY True # 防止JavaScript访问cookie代码解析
SESSION_COOKIE_SECURE确保会话cookie仅在HTTPS连接中传输防止数据被中间人攻击窃取。SESSION_COOKIE_HTTPONLY防止JavaScript访问会话cookie减少XSS攻击的风险。
这些配置选项提高了会话数据的安全性保护用户数据免受潜在的安全威胁。 会话技术应用基本cookie
除了会话cookieDjango还支持设置基本的cookie以存储非会话相关的数据。这对于需要在多个会话间持久存储用户信息的场景很有用。
from django.http import HttpResponsedef set_basic_cookie(request):response HttpResponse(基本cookie已设置)response.set_cookie(basic_cookie, value, max_age3600) # 设置cookie过期时间为1小时return responsedef get_basic_cookie(request):value request.COOKIES.get(basic_cookie, 默认值)return HttpResponse(f基本cookie数据{value})代码解析
response.set_cookie(basic_cookie, value, max_age3600)设置基本的cookie键为basic_cookie值为value过期时间为1小时。request.COOKIES.get(basic_cookie, 默认值)从请求中获取cookie数据如果不存在则返回默认值默认值。
通过设置基本cookie你可以在多个会话间持久化存储用户数据实现更灵活的功能。 会话技术和cookie简介
会话与cookie紧密相关会话数据通常存储在客户端的cookie中。Django的会话机制使用cookie来跟踪用户的会话状态同时确保数据的安全性。
# settings.py
SESSION_ENGINE django.contrib.sessions.backends.signed_cookies # 使用加密cookie存储会话数据代码解析
SESSION_ENGINE django.contrib.sessions.backends.signed_cookies指定会话数据存储在签名加密的cookie中以确保数据的完整性和安全性。
这种方式确保了会话数据的安全性同时允许在客户端存储会话信息。 django内置session机制内置认证模块
Django内置的认证模块提供了完整的用户认证和会话管理功能。使用django.contrib.auth模块你可以轻松地实现用户登录、注销和权限管理。
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponsedef user_login(request):user authenticate(request, usernameusername, passwordpassword)if user is not None:login(request, user)return HttpResponse(登录成功)else:return HttpResponse(登录失败)def user_logout(request):logout(request)return HttpResponse(登出成功)代码解析
authenticate检查用户名和密码是否正确。login将用户登录到当前会话。logout结束当前用户的会话。
Django的认证模块简化了用户管理使得用户登录和权限控制变得容易实现。 会话技术应用session实现单点登录
单点登录SSO使用户可以在多个系统中使用同一账号登录。Django通过配置共享会话数据实现SSO功能。
# settings.py
SESSION_COOKIE_DOMAIN .example.com # 允许在example.com及其子域名中共享会话数据代码解析
SESSION_COOKIE_DOMAIN指定会话cookie的域名使其在指定域及其子域中共享。
这种配置使得不同子域名的应用可以共享用户会话实现无缝的单点登录体验。 会话技术Session配置和全局处理
Django提供了多种配置选项来调整会话的行为例如会话的过期时间和存储方式。通过合理配置可以满足各种应用需求。
# settings.py
SESSION_ENGINE django.contrib.sessions.backends.cache # 使用缓存存储会话数据
SESSION_COOKIE_AGE 3600 # 会话有效期1小时
SESSION_EXPIRE_AT_BROWSER_CLOSE True # 浏览器关闭时会话过期代码解析
SESSION_ENGINE设置会话存储的方式例如缓存、数据库或加密cookie。SESSION_COOKIE_AGE设置会话的过期时间单位为秒。SESSION_EXPIRE_AT_BROWSER_CLOSE浏览器关闭时是否过期。
通过这些设置你可以控制会话的生命周期和存储方式以适应不同的应用场景。