Wagtail-基于Python Django的内容管理系统CMS实现公网访问 文章目录 Wagtail-基于Python Django的内容管理系统CMS实现公网访问 前言 1....Wagtail 是一个基于 Django 的开源内容管理系统,拥有强大的社区和商业支持。它专注于用户体验,并为设计人员和开发人员提供精确控制。...选择wagtail的原因: 它能快速实现页面的表达,对于我这种对新实现的功能想要找到地方进行展示,但前端能力又不太行的同学 基于django 一直会对django的稳定版本进行支持 Wagtail由开发人员为开发人员构建...://127.0.0.1:8000/即可看到Wagtail的欢迎页面 2....(局域网访问的端口) 域名类型:免费选择随机域名 地区:选择China top 点击创建 隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https
Wagtail是一个基于Django的优秀CMS(内容管理系统)。有强大的Django社区做后盾,开发资源相当丰富。利用它我们可以轻松地搭建属于自己的内容发布网站。...Wagtail的后台管理界面漂亮而且强大,有良好的权限管理系统,页面、图片和文档的管理功能以及富文本编辑功能。在文本内容搜索上可以集成elasticsearch,非常方便。...为了方便,前端样式选择了轻量的purecss框架,有现成的一些页面样式可以使用,而且比较符合个人审美。...此外,由于之前的内容发布使用WordPress博客系统,需要导入原来的原生HTML内容,维基页面要兼容原生html,所以目前游客的权限较低,修改后需要提交审核。...markdown编辑功能暂时没有加上,不过有开源的插件,使用很方便。 效果图 ? 移动端首页 ? PC端首页 ? 标签页 ? 搜索结果页面 ? PC端单维基页面 ? 移动端单维基页面 ?
5、search则是自动生成的提供搜索功能的app文件夹,由于基于wagtail.wagtailsearch所以只包含了views.py视图文件和templates模板文件夹。暂时不管。...,只是具体链接可能为外链、某个页面或某个文档,占用了三个字段,此外还利用@property装饰器为该模型添加了link属性,来返回它的具体链接,这样在模板中就可以使用.link调用。...对于模板来说,它对应的页面模型处于它的上下文环境,在模板中可以调用到该页面模型中的所有元素(使用Django的模板语言)。我们要按照页面排版将元素填充进去。...在wiki文件夹下的models.py文件旁新建一个snippets.py文件 实际上,它还是创建了一个Django模型,只包含了一个富文本字段,但是利用Wagtail提供的register_snippet...最终,访问http://127.0.0.1:8000/ 便可以看到页面效果。 ? 不过细心的朋友可能会发现页脚还是空的,我们还需要在管理界面设置下页脚,点击snippets栏,并点击红圈 ? ?
Django:特点:Django 本身并不包含内置的 CMS,但可以通过第三方包如 Django CMS、Wagtail 等实现完整的内容管理系统。...管理界面:Django 自带一个功能强大的管理后台,可以通过少量配置用于内容管理。Wagtail 提供了一个高度用户友好的 CMS 解决方案,适合编辑和非技术用户。2....特性:模型定义清晰,支持复杂查询、关系和数据迁移。Django ORM 提供了丰富的 API 和查询集方法,便于处理复杂的数据关系和操作。3....用户认证和授权Keystone.js:特点:提供基本的用户认证和授权功能,可以通过插件扩展。特性:支持用户注册、登录和权限管理。...Django:特点:内置强大的用户认证和授权系统,支持用户注册、登录、密码重置和权限管理。特性:Django 的认证系统可以轻松扩展,支持自定义用户模型、权限和组管理。
接口分页效果 我们可以看到接口返回的信息还包含了前一页和后一页的 url 是不是很人性化 接口数据多条件筛选 目前我们的接口要查找特定的信息只能通过 id 来查找,这肯定是不够完善的,这部分将设置接口的多条件查询...首先我们需要安装过滤器的模块 pip install django-filter 然后我们需要将过滤器模块到 settings.py 中的 INSTALLED_APPS 进行注册才可以使用。...title="xxxxxx"&format=json 进行访问,可以得到筛选的结果。但是有个问题就是只能精确查询才可以,如果你输入的参数不完整,就查询不到,接下来,我们尝试着完成模糊查询。...然后我们发现就可以进行操作了,但是目前这个权限有个缺点,就是不是 post 下的 author 登陆后也可以对 post 进行操作修改,我们重新通过继承 BasePermission 重写一个权限类,限制只能由...,注意该页面不允许 GET 访问 http://192.168.x.xxx:8080/api/login/ username=xxx password=xxxxx 然后我们能够查看到返回结果类似如下 ?
二、Wagtail介绍 2.1 Wagtail简介 Wagtail是一个用Python编写的开源CMS,并构建在Django框架上。...它优雅、强大、敏捷,专注于灵活性和用户体验,为开发人员提供一个快速有吸引力的界面,可以直观地创建和组织内容。Wagtail专注于用户体验,并为设计人员和开发人员提供精确的控制。...2.2 Wagtail特点 一个快速、有吸引力的作者界面 完全控制前端设计和结构 扩展到数百万个页面和数千个编辑器 开箱即用,需要时缓存友好 具有解耦前端的“无头”站点的内容 API 在 Raspberry...在页面中填写服务器 IP、端口和用户名等基本信息。...systemctl restart nginx 八、测试访问云主机的Wagtail服务 访问地址:http://1.13.24.126/,访问Wagtail首页。
有强大的内容管理功能,再加上庞大的插件市场,可以实现很多网站功能。...主题和模板:WordPress具备成熟的主题和模板系统,有海量自由选择的主题模板。也可以自行开发定制主题。...wagtail/wagtail[3] Stars: 15.2k License: BSD-3-Clause demo of wagtail/wagtail Wagtail 是一个基于 Django...它提供了直观而强大的界面,使用户能够轻松创建、组织和管理其网站上的各种类型页面。 强大灵活性。.../wagtail: https://github.com/wagtail/wagtail [4] django-cms/django-cms: https://github.com/django-cms
最常见的 CMS 就是博客系统,作者登录管理后台写文章,点击发布后读者就可以访问指定网址,看到作者发布的内容啦。...2.1 wagtail Star 数:13.4k|编程语言:Python(79.3%) 基于 Python 知名 Web 框架 Django 实现的无头内容管理系统,拥有清爽的 UI 和简洁易用的编辑器...它的强大之处在于提供了丰富、免费、可自定义的主题,用户可以自由搭配轻松建站。专业的会员订阅和数据可视化功能,让内容创作者可以围绕内容,尝试发展商业化业务。除此之外,它还拥有先进的所见即所得编辑器。...,它拥有开箱即用的 API 和友好的管理面板,自带权限管理、默认安全、SEO 友好等特点。...会 Python:django-cms 容易接受,wagtail 则更新、势头更猛。 会前端:推荐 strapi 它背后有商业化公司支持,吃透了可以谋个远程全职。
如果查询没有返回结果也会抛出异常: 6.数据排序 在运行前面的例子中,你可能已经注意到返回的结果是无序的。 我们还没有告诉数据库 怎样对结果进行排序,所以我们返回的结果是无序的。...第七章 用户、用户组和权限 因为你是用超级用户登录的,你可以创建,编辑和删除任何对像。 然而,不同的环境要求有不同的权限,系统不允许所有人都是超级用户。...管理工具有一个用户权限系统,通过它你可以根据用户的需要来指定他们的权限,从而达到部分访问系统的目的。 你通过管理界面编辑用户及其许可就像你编辑别的对象一样。...浏览用户和用户组区域的时候已经见过这些了。 如你所想,用户对象有标准的用户名、密码、邮箱地址和真实姓名,同时它还有关于使用管理界面的权限定义。...成员标志:它用来控制这个用户是否可以登录管理界面(即:这个用户是不是你们组织里的成员) 由于用 户系统可以被用于控制公众页面(即:非管理页面)的访问权限(详见第十四章),这个标志可用来区分
DRF (Django REST Framework)[1] 有了 DRF,你可以快速将现有的 Django site 转换为 RESTful API。...SQL 查询、请求和响应,以及一般性能分析。...django-filter[8] 一种改进的基于用户选择过滤Django QuerySet的方法。支持 DRF。...django-storages[9] 你是否在处理用户上传的内容(在 Django 中通常称为“media”),或者为静态文件使用专用的 CDN(如 S3)?...Wagtail CMS[13] 如果您想要一个用 Python 构建的可定制内容管理系统(CMS),Wagtail 是一个很好的选择。
Django admin 站点使用如下的权限: 拥有该类型对象"add"权限的用户才可以访问"add"表单以及添加一个该类型对象。...限制对登录用户的访问 原始方式 限制访问页面的简单原始方法是检查request.user.is_authenticated,并重定向到登录页面: from django.conf import settings...装饰器也可以采取可迭代的权限,在这种情况下,用户必须具有所有权限才能访问视图。...在Django更改1.10: 在旧版本中,ModelBackend允许非活动用户进行身份验证。 处理对象权限 django的权限框架对对象权限有基础的支持, 尽管在它的核心没有实现它. ...它接受请求,应用当前过滤器的查询集以及用户提供的搜索项。 它返回一个包含被修改以实现搜索的查询集的元组,以及一个指示结果是否可能包含重复项的布尔值。
但是过滤器还是挺有意思的{ 变量名 | 过滤器:可选参数 }, 模板过滤器有不少, 而且还可以叠加使用, 所以这就可以用来绕一些WAF。...有一个比较有意思的过滤器是safe , 如果输出的内容经过这个过滤器的话那么Django就不会对其进行转义,可以让该数据语义生效。...,会判断,这个随机字符串是不是第一次它发给用户的那个,如果是,则数据提交成功,如果不是,则返回403权限错误。..., 它可以帮助用户进行数据库的连接访问, 同时更重要的是可以让用户不是通过写sql语句查询数据, 而是通过类和对象的函数方法完成对数据库的操作。...如果访问用户当前没有登录,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。
# 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。...,__name是外键的name字段,只写course则无法在过滤器中显示。...'] # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。...这里我就不介绍了,有兴趣的小伙伴们可以自己设置,这里我开启传送大门:xadmin管理员详情页面布局,导航图标设置 至此,我们自己专属的网站后台就搭建成功了,感谢你的赏阅!...下一篇我们就正式进入到前端页面的配置了,主要解决用户注册,登录的问题。
之自定义用户权限(自定义RBAC组件) RBAC组件 rbac 组件一般我们用于权限的校验,帮助我们更好的管理用户认证信息,不同的用户权限不同,访问的界面展示也不相同 什么是权限: 一个含有正则表达式的...任何利用中间件和自定义的模块 传输和获取 当前用户的权限信息 # 通过自定义 middleware 模块在 setting 中加入,引入中间件 from django.utils.deprecation...中 :param user:当前登录人 :param request: :return: """ # 查询当前登录人的所有权限列表 permissions = Role.objects.filter...动态显示菜单权限 动态获取显示菜单,注意本次显示是后台操作 需要获取当前用户的权限信息,获取 url 和 是否为菜单,以及所带的 icon 图标。因为设计到传值的问题,于是我们产生了自定过滤器。...以上这篇django admin 根据choice字段选择的不同来显示不同的页面方式就是小编分享给大家的全部内容了,希望能给大家一个参考。
vue-router提供了路由跳转,在上个时代,路由是在后端来控制的,把页面渲染后返回给前端直接展示,前后端分离后,后端只负责返回数据,把控制权交给前端。...Django的视图有两个类型:类视图和函数视图。path()只接受可调用对象,所以类视图需要使用as_view()进行转化,比如views.UserLogin.as_view()。...fixtures名字是固定的,就像pytest的conftest.py一样,只认这个名字。user.json存放数据: ? 包括管理员用户、角色权限、管理员角色对照关系。其中角色权限数据共3条: ?...auth里面定义了菜单,对应首页的顶部导航栏的栏目,比如本文只添加了后台管理。access表示角色是否有权限访问,只有管理员的这条数据,access为true。...点击退出,返回登录页,重新登录。 查询右上角个人信息,包括用户名、昵称、角色。 通过右上角下拉菜单修改密码,和老密码不匹配会提示修改失败,填写正确信息会修改成功,自动跳转到登录页面重新登录。
中定义路由时,通常以斜线/结尾,其好处是用户访问不以斜线/结尾的相同路径时, Django会把用户重定向到以斜线/结尾的路径上,而不会返回404不存在。...方法,常用值包括:'GET'、'POST' user:请求的用户对象 path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分...当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据。...也就意味着查询集可以含有零个、一个或多个过滤器....过滤器基于所给的参数限制查询的结果 从SQL的角度讲,查询集与select语句等价,过滤器像where、limit、order by子句。
No.1 MVC&MTV MVC M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作 V全拼为View,用于封装结果,生成页面展示的html内容 C全拼为Controller...() 查询集 查询集表示从数据库中查询到的对象集合 返回查询集的过滤器 all():返回所有数据 filter(): 返回满足条件的数据 exclude(): 返回不满足条件的数据 order_by()...: 对结果集排序 返回单个值的过滤器 get(): 返回单个满足条件的对象,如果未找到会抛出DoesNotExist异常,如果返回多条抛出MultipleObjectReturnned异常 count(...): 返回当前查询结果的总条数 aggregate(): 聚合,返回一个字典 判断一个查询集中是否有数据 两个特性 惰性 创建查询集不会访问数据库,直到调用数据时,才会访问数据库 缓存 使用同一个结果集...value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期,如果value为None,那么会话永不过期 No.5 模板 负责封装构造要返回的html 模板语言 变量 语法:{{变量}} 解析顺序
8.Controller控制器将html页面内容返回给浏览器。 9.浏览器接收到服务器Controller返回的html页面之后进行解析展示。...T:Template,模板,和MVC中的V功能相同,产生html页面。 ? 我们还是以同样的一个注册案例来对MVT模型进行一个简单的说明: 1.用户点击注册按钮,将要注册的内容发送给网站的服务器。...2.View视图,接收到用户发来的注册数据,View告诉Model将用户的注册信息保存进数据库。 3.Model层将用户的注册信息保存到数据库中。 4.数据库将保存的结果返回给Model。...5.Model将保存的结果再返回给View视图。 6.View视图告诉Template模板去产生一个html页面。 7.Template生成html内容返回给View视图。...8.View视图将html页面内容返回给浏览器。 9.浏览器拿到view返回的html页面内容进行解析,展示。 4.Django中models利用ORM对MySQL进行查表的语句(多个语句)?
HTTP_403_FORBIDDEN:没有权限访问 HTTP_404_NOT_FOUND:页面没有发现 HTTP_500_INTERNAL_SERVER_ERROR:服务器内部错误 HTTP_502_...也就是必须每个人区分开,所以就有了用户名来标识,但每次访问页面都要登录,非常麻烦,这就有了会话保持。Cookie+Session就是实现会话保持的技术。...JWT 与普通Token一样,都是访问资源的令牌,区别是普通Token服务端验证token信息要查询数据库验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...与普通Token一样,都是访问资源的令牌,区别是普通Token服务端验证token信息要查询数据库验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...:基于Token的认证 RemoteUserAuthentication:基于远程用户的认证 DRF支持权限: IsAuthenticated:只有登录用户才能访问所有API AllowAny:允许所有用户
过程: 客户端访问/use_template/,服务器调用对应的视图函数,进行模板的渲染,给模板文件传递变量,将模板文件中的变量进行替换,获取替换之后的html内容,将替换之后的html内容返回给客户端...,返回渲染之后的完整的html页面,客户端只是显示。...web网站开发的两种模式: 1)前后端不分离:前端看到的效果是由后端进行控制的。 2)前后端分离:后端只返回前端所需的数据,至于数据怎么展示,由前端自己控制。...render 其实就是就是下面模板的详细步骤的一个简写封装。 3.3模板的详细步骤(重点掌握) 如果我们不想返回响应对象,只是想渲染一下页面,替换数据,那么我们可以按下面的来。...| 过滤器(参数...)}} b) Django中模板过滤器的使用: {{ 模板变量 | 过滤器:参数 }} 注意:Django中过滤器:号之后只能接收一个参数 ?
领取专属 10元无门槛券
手把手带您无忧上云