热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:6Python全站之路系列之Django站点管理

篇首语:本文由编程笔记#小编为大家整理,主要介绍了6Python全站之路系列之Django站点管理相关的知识,希望对你有一定的参考价值。Python全栈之路系

篇首语:本文由编程笔记#小编为大家整理,主要介绍了6Python全站之路系列之Django站点管理相关的知识,希望对你有一定的参考价值。



Python全栈之路系列之Django站点管理


站点管理也称之为后台,比如说博客的后台你可以发布文章,修改文章,修改频道等信息。

Django使用极少的代码为你做了一切,在Django中创建管理界面已经不是问题,它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作。


django.contrib包

Django自动管理工具是django.contrib的一部分。django.contrib是一套庞大的功能集,它是Django基本代码的组成部分,Django框架就是由众多包含附加组件(add-on)的基本代码构成的。你可以把django.contrib看作是可选的Python标准库或普遍模式的实际实现。它们与Django捆绑在一起,这样你在开发中就不用重复发明轮子了。

激活管理界面

Django管理站点完全是可选择的,如果你要开其它,请根据下面的步骤来操作:

打开settings.py文件,找到INSTALLED_APPS段;

django1.10默认已经为你开启了

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘darker‘,
]

生成数据库

E:\DarkerProjects>python manage.py check
E:\DarkerProjects>python manage.py makemigrations
E:\DarkerProjects>python manage.py migrate

将admin配置URLconf(urls.py文件)到中

urlpatterns = [
    # 默认已经开启
    url(r‘^admin/‘, admin.site.urls),
]

运行Django

E:\DarkerProjects>python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
August 09, 2016 - 15:44:06
Django version 1.10, using settings ‘DarkerProjects.settings‘
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

访问管理界面

打开浏览器访问http://127.0.0.1:8000/admin

如果配置没有问题你将会看到如下界面:

技术分享

使用管理工具

不知你是否已经发现并没有登陆的用户名和密码?如果没有请通过如下命令创建:

E:\DarkerProjects>python manage.py createsuperuser
Username (leave blank to use ‘administrator‘): ansheng
Email address: [email protected]
# helloword
Password:
# helloword
Password (again):
Superuser created successfully.

设置完成之后重新打开http://127.0.0.1:8000/admin页面,输入我们刚刚用户名和密码,绝壁的会登陆成功。

技术分享

登陆成功之后,默认情况下她仅有两个默认的管理-编辑模块:用户组(Groups)和用户(Users)。

设置页面为中文

打开settings.py文件,找到MIDDLEWARE配置项:

MIDDLEWARE = [
    ‘django.middleware.security.SecurityMiddleware‘,
    ‘django.contrib.sessions.middleware.SessionMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    ‘django.middleware.csrf.CsrfViewMiddleware‘,
    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
    ‘django.contrib.messages.middleware.MessageMiddleware‘,
    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
    ‘django.middleware.locale.LocaleMiddleware‘, # 这是新添加的内容,请确保此项在‘django.middleware.clickjacking.XFrameOptionsMiddleware‘后面
]

更改完成之后你不需要重新启动django也可以看到生效页面,如下图:

技术分享

将Models加入到Admin管理中

上篇文章中我们定义了三个模块studentcoursescore

打开darkerapp目录下面的admin.py,内容修改为:

from django.contrib import admin
from darker.models import student, course, score
# Register your models here.
admin.site.register(student)
admin.site.register(course)
admin.site.register(score)

完成后,打开页面http://127.0.0.1:8000/admin,你会看到一个DARKER区域,其中包含Courses、Scores和Students,如下图:

技术分享

Admin是如何工作的?

当服务启动时,Django从url.py引导URLconf,然后执行admin.autodiscover()语句。这个函数遍历INSTALLED_APPS配置,并且寻找相关的admin.py文件,如果在指定的app目录下找到admin.py,它就执行其中的代码。

darker应用程序目录下的admin.py文件中,每次调用admin.site.register()都将那个模块注册到管理工具中,管理工具只为那些明确注册了的模块显示一个编辑/修改的界面。

应用程序django.contrib.auth包含自身的admin.py ,所以Users和Groups能在管理工具中自动显示,其它的django.contrib应用程序,如django.contrib.redirects,其它从网上下在的第三方Django应用程序一样,都会自行添加到管理工具.

综上所述,管理工具其实就是一个Django应用程序,包含自己的模块、模板、视图和URLpatterns,你要像添加自己的视图一样,把它添加到URLconf里面,你可以在Django基本代码中的django/contrib/admin目录下,检查它的模板、视图和URLpatterns,但你不要尝试直接修改其中的任何代码,因为里面有很多地方可以让你自定义管理工具的工作方式。

设置字段可选

只需要在列内增加如下字段,例如:

gender = models.CharField(max_length=2,blank=True)

以上代码表示性别是可选的,如果你设置一个日期类型为空那么请设置成如下:

date = models.DateField(**blank=True, null=True** )

自定义字段标签

在编辑页面中,每个字段的标签都是从模块的字段名称生成的。规则:用空格替换下划线;首字母大写。

如果你需要自定义标签,请设置如下:

class student(models.Model):
    id = models.AutoField
    sname = models.CharField(max_length=12, verbose_name="姓名")
    sname = models.CharField("姓名", max_length=12)
    gender = models.CharField(max_length=2, blank=True, verbose_name="性别")
    # gender = models.CharField("性别", max_length=2, blank=True)

然后再次通过管理页面进行添加数据的时候将会得到如下界面:
技术分享

自定义ModelAdmi类

请先把admin.py文件回滚到最初的状态并且修改models.py文件内容为:

from django.db import models
# Create your models here.
class UserInfo(models.Model):
    id = models.AutoField
    name = models.CharField(max_length=12, verbose_name="姓名")
    gender = models.CharField(max_length=2, blank=True, verbose_name="性别")
    email = models.EmailField("邮箱")
    date = models.DateField(verbose_name="创建日期")
    
    def __str__(self):
        return ‘%s %s %s %s %s‘ % (self.id, self.name, self.gender, self.email, self.date)

然后创建数据表:

E:\DarkerProjects>python manage.py check
E:\DarkerProjects>python manage.py makemigrations
E:\DarkerProjects>python manage.py migrate

修改admin.py文件内容为:

from django.contrib import admin
from darker.models import UserInfo
# Register your models here.
class AuthorAdmin(admin.ModelAdmin):
    # 列表显示的名称
    list_display = ("id", "name", "gender", "email", "date",)
    # 快速查询栏
    search_fields = (‘id‘, ‘name‘,)
    # 时间的过滤,它包含:今天、过往七天、当月和今年
    list_filter = (‘date‘,)
    # 同上
    date_hierarchy = ‘date‘
    # 排序的时候倒序,根据ID
    ordering = (‘-id‘,)
    
admin.site.register(UserInfo, AuthorAdmin)

因为数据库被重新初始化了,你又可以需要重置管理员密码,不过这并不重要,执行python manage.py runserver,登陆之后在UserInfo表中插入几条数据,然后就会得到如下界面:

技术分享

自定义编辑表单

admin.py文件中的AuthorAdmin类添加一行代码:

fields = ("name", "email", "date",)# filter_horizontal = (‘authors‘,) 多选,filter_horizontal和filter_vertical选项只能用在多对多字段上

表示是再添加数据的实现显示的选项,如下图:

技术分享

用户用户组和权限

三个布尔型标记

  1. 活动标志,它用来控制用户是否已经激活,如果一个用户帐号的这个标记是关闭状态,而用户又尝试用它登录时,即使密码正确,他也无法登录系统。

  2. 成员标志,它用来控制这个用户是否可以登录管理界面(即:这个用户是不是你们组织里的成员)由于用户系统可以被用于控制公众页面(即:非管理页面)的访问权限(详见第十四章),这个标志可用来区分公众用户和管理用户。

  3. 超级用户标志,它赋予用户在管理界面中添加、修改和删除任何项目的权限,如果一个用户帐号有这个标志,那么所有权限设置(即使没有)都会被忽略。

当你创建一个用户时,它没有任何权限,该有什么权限是由你决定的,这些权限是定义在模块级别上,而不是对象级别上的。

权限管理系统也控制编辑用户和权限,如果你给某人编辑用户的权限,他可以编辑自己的权限,这种能力可能不是你希望的。 赋予一个用户修改用户的权限,本质上说就是把他变成一个超级用户。

你也可以给组中分配用户,一个组简化了给组中所有成员应用一套许可的动作,组在给大量用户特定权限的时候很有用。

#Python全栈之路 #Django



推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文详细介绍了如何在 Django 项目中使用 Admin 管理后台,包括创建超级用户、启动项目、管理数据模型和修改用户密码等步骤。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
author-avatar
小女人的忧伤--
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有