当前位置: 首页 > news >正文

做漫画封面的网站一个ip地址做多个网站

做漫画封面的网站,一个ip地址做多个网站,成都网站推广营销,使用html作为wordpress登录文章目录 前言页面数据模型数据库字段部分搜索部分编辑面板基础面板结构化面板父页面/子页面类型规则页面URLs自定义页面模型的URL模式获取页面实例的URL 模板渲染为页面模型添加模板模板上下文自定义模板上下文更改模板动态选择模板Ajax 模板 内联模型在多个页面类型之间重用内… 文章目录 前言页面数据模型数据库字段部分搜索部分编辑面板基础面板结构化面板父页面/子页面类型规则页面URLs自定义页面模型的URL模式获取页面实例的URL 模板渲染为页面模型添加模板模板上下文自定义模板上下文更改模板动态选择模板Ajax 模板 内联模型在多个页面类型之间重用内联模型 使用页面 前言 Wagtail中的每种页面类型也称为内容类型都由Django模型表示。所有页面模型都必须继承自 wagtail.models.Page 类。 正如所有页面类型都是Django模型一样您可以使用Django提供的任何字段类型。请参阅Django模型字段参考获取可用字段类型的完整列表。此外Wagtail还提供了 wagtail.fields.RichTextField该字段提供了一个所见即所得的编辑器用于编辑富文本内容。 页面数据模型 一个页面的数据模型包括如下基本内容 from django.db import modelsfrom modelcluster.fields import ParentalKeyfrom wagtail.models import Page, Orderable from wagtail.fields import RichTextField from wagtail.admin.panels import FieldPanel, MultiFieldPanel, InlinePanel from wagtail.search import indexclass BlogPage(Page):# 数据库字段body RichTextField()date models.DateField(Post date)feed_image models.ForeignKey(wagtailimages.Image,nullTrue,blankTrue,on_deletemodels.SET_NULL,related_name)# 搜索索引配置body和date可被搜索search_fields Page.search_fields [index.SearchField(body),index.FilterField(date),]# 管理界面编辑面板配置content_panels Page.content_panels [FieldPanel(date),FieldPanel(body),InlinePanel(related_links, headingRelated links, labelRelated link),]promote_panels [MultiFieldPanel(Page.promote_panels, Common page configuration),FieldPanel(feed_image),]# 父页面 / 子页面类型规则parent_page_types [blog.BlogIndex]subpage_types []class BlogPageRelatedLink(Orderable):page ParentalKey(BlogPage, on_deletemodels.CASCADE, related_namerelated_links)name models.CharField(max_length255)url models.URLField()panels [FieldPanel(name),FieldPanel(url),]包括以下几个部分 数据库字段部分 每个 Wagtail页面是一个Django数据模型在数据库中表示一个独立的表。 Wagtail 也提供了一些它自己的类: RichTextField - For rich text contentStreamField - A block-based content field (see: Freeform page content using StreamField)对于标签tag Wagtail 完全支持django的标签系统。 搜索部分 搜索字段定义了哪些哪些字段被添加到了搜索索引是如何被索引的。 search_fields Page.search_fields [index.SearchField(body),index.FilterField(date),] 编辑面板 定义了页面的字段是如何通过面板被展示在编辑接口的。 content_panels - 用于内容展示如文本等promote_panels - 用于 metadata, 比如 tags, thumbnail image and SEO titlesettings_panels - 用户设置, 比如发布日期又分为基础的和结构型的 基础面板 编辑数据字段字段面板会选择合适的wideget来适配这些字段。比如富文本会选择富文本小组件。图片选择小组件选择一个外键指向一个图片模型。 FieldPanelPageChooserPanel结构化面板 用于结构化字段 MultiFieldPanelInlinePanelFieldRowPanel父页面/子页面类型规则 这两个属性允许您控制页面类型在站点中的使用位置。它们允许您定义诸如“博客条目只能在博客索引下创建”之类的规则。 parent_page_types 和 subpage_types 都接受模型类或模型名称的列表。模型名称的格式为 app_label.ModelName。如果省略了 app_label则假定为相同的应用程序。 parent_page_types 限制了可以在此类型下创建哪些页面类型。 subpage_types 限制了可以在此类型下创建哪些页面类型。 默认情况下任何页面类型都可以在任何页面类型下创建如果这是期望的行为则不需要设置这些属性。 将 parent_page_types 设置为空列表是防止特定页面类型在编辑界面中被创建的一种好方法。 页面URLs 检索页面URL的最常见方法是使用 {% pageurl %} 或 {% fullpageurl %} 模板标签。由于它是从模板中调用的这些标签会自动包含下面提到的优化。 页面模型还包括一些用于覆盖或访问页面URL的低级方法。 自定义页面模型的URL模式 Page.get_url_parts(request) 方法通常不会直接调用但可以被覆盖以为给定的页面模型定义自定义的URL路由。它应该返回一个元组 (site_id, root_url, page_path)这些由 get_url 和 get_full_url见下文用于构建给定类型的页面URL。 在覆盖 get_url_parts() 时应该接受 *args, **kwargs def get_url_parts(self, *args, **kwargs):并在调用 super 上的 get_url_parts 时传递它们如果适用例如 super().get_url_parts(*args, **kwargs)虽然您可以仅传递 request 关键字参数但将所有参数原样传递确保了对这些方法签名的任何未来更改的兼容性。 有关更多信息请参阅 wagtail.models.Page.get_url_parts()。 获取页面实例的URL 您可以在需要页面URL时调用 Page.get_url(request) 方法。如果它确定页面在当前站点上通过请求中的主机名它将默认返回本地URL不包括协议或域否则它将返回包括协议和域的完整URL。在可能的情况下应包括可选的 request 参数以启用每个请求的站点级URL信息的缓存并促进本地URL的生成。 get_url(request) 的一个常见用例是在项目中包含用于生成导航菜单的任何自定义模板标签中调用。在编写这样的自定义模板标签时请确保它包括 takes_contextTrue 并使用 context.get(‘request’) 来安全地传递请求或者如果上下文中不存在请求则传递 None。 有关更多信息请参阅 wagtail.models.Page.get_url()。 要检索完整的URL包括协议和域请使用 Page.get_full_url(request)。在可能的情况下应包括可选的 request 参数以启用每个请求的站点级URL信息的缓存。 有关更多信息请参阅 wagtail.models.Page.get_full_url()。 模板渲染 每个页面模型都可以被分配一个 HTML 模板当用户在站点前端浏览到页面时该模板将被呈现。这是将 Wagtail 内容传递给最终用户的最简单和最常见的方式之一但不是唯一的方式。 为页面模型添加模板 Wagtail会根据应用标签和模型类名自动选择模板的名称。 格式 app_label/model_name蛇形命名.html例如上述博客页面的模板将是 blog/blog_page.html你只需在可以使用这个名称访问的位置创建一个模板。 模板上下文 Wagtail通过将页面变量绑定到正在渲染的页面实例来呈现模板。使用这个变量来访问页面的内容。例如要获取当前页面的标题请使用 {{ page.title }}。上下文处理器提供的所有变量也都可用。 自定义模板上下文 所有页面都有一个 get_context 方法每当模板被渲染时都会调用该方法并返回一个要绑定到模板中的变量字典。 要向模板上下文添加更多变量您可以覆盖此方法 class BlogIndexPage(Page):...def get_context(self, request, *args, **kwargs):context super().get_context(request, *args, **kwargs)# Add extra variables and return the updated contextcontext[blog_entries] BlogPage.objects.child_of(self).live()return context然后这些变量可以在模板中使用 {{ page.title }}{% for entry in blog_entries %}{{ entry.title }} {% endfor %}更改模板 将模板属性设置在类上以使用不同的模板文件 class BlogPage(Page):...template other_template.html动态选择模板 可以通过在页面类上定义 get_template 方法以在每个实例基础上动态更改模板。该方法在每次渲染页面时都会被调用 class BlogPage(Page):...use_other_template models.BooleanField()def get_template(self, request, *args, **kwargs):if self.use_other_template:return blog/other_blog_page.htmlreturn blog/blog_page.html在这个例子中拥有设置了 use_other_template 布尔字段的页面将使用 blog/other_blog_page.html 模板。所有其他页面将使用默认的 blog/blog_page.html 模板。 Ajax 模板 如果您想要向页面添加 AJAX 功能例如在页面上直接更新而不是触发完整的页面重新加载的分页列表您可以设置 ajax_template 属性来指定在通过 AJAX 调用请求页面时使用的替代模板由 X-Requested-With: XMLHttpRequest HTTP 头指示 class BlogPage(Page):...ajax_template other_template_fragment.htmltemplate other_template.html对页面渲染的更多控制 所有页面类都有一个 serve() 方法内部调用 get_context 和 get_template 方法并呈现模板。这个方法类似于一个 Django 视图函数接受一个 Django Request 对象并返回一个 Django Response 对象。 这个方法也可以被覆盖以完全控制页面的渲染。 例如下面是使页面以其自身的 JSON 表示响应的一种方法 from django.http import JsonResponseclass BlogPage(Page):...def serve(self, request):return JsonResponse({title: self.title,body: self.body,date: self.date,# Resizes the image to 300px width and gets a URL to itfeed_image: self.feed_image.get_rendition(width-300).url,})内联模型 Wagtail 允许在页面内嵌套其他模型。这对于创建重复字段如相关链接或在轮播中显示的项目非常有用。内联模型的内容也与页面的其余部分一起进行版本控制。 每个内联模型都需要以下内容 必须继承自 wagtail.models.Orderable。 必须具有到父模型的 ParentalKey。 模型内联功能由 django-modelcluster 提供ParentalKey 字段类型必须从该模块导入 from modelcluster.fields import ParentalKeyParentalKey 是 Django 的 ForeignKey 的子类并接受相同的参数。 例如以下内联模型可用于向 BlogPage 模型添加相关链接名称、URL 对的列表 from django.db import models from modelcluster.fields import ParentalKey from wagtail.models import Orderableclass BlogPageRelatedLink(Orderable):page ParentalKey(BlogPage, on_deletemodels.CASCADE, related_namerelated_links)name models.CharField(max_length255)url models.URLField()panels [FieldPanel(name),FieldPanel(url),]要将这个添加到管理员界面中请使用 InlinePanel 编辑面板类 content_panels [...InlinePanel(related_links, labelRelated links), ]第一个参数必须与 ParentalKey 的 related_name 属性的值匹配。有关 InlinePanel 接受的参数的简要描述请参阅 InlinePanel。 在多个页面类型之间重用内联模型 在上面的例子中相关链接被定义为 BlogPage 页面类型上的子对象。通常相同类型的内联子对象将出现在多个页面类型上在这些情况下重复整个模型定义是不可取的。可以通过将共同的字段重构为抽象模型来避免这种情况 from django.db import models from modelcluster.fields import ParentalKey from wagtail.models import Orderable# The abstract model for related links, complete with panels class RelatedLink(models.Model):name models.CharField(max_length255)url models.URLField()panels [FieldPanel(name),FieldPanel(url),]class Meta:abstract True# The real model which extends the abstract model with a ParentalKey relation back to the page model. # This can be repeated for each page type where the relation is to be added # (for example, NewsPageRelatedLink, PublicationPageRelatedLink and so on). class BlogPageRelatedLink(Orderable,RelatedLink):page ParentalKey(BlogPage, on_deletemodels.CASCADE, related_namerelated_links)或者如果 RelatedLink 将出现在您项目中定义的大量页面类型上将一个单独的 RelatedLink 模型设置为指向基础的 wagtailcore.Page 模型可能更合适 class RelatedLink(Orderable):page ParentalKey(wagtailcore.Page, on_deletemodels.CASCADE, related_namerelated_links)name models.CharField(max_length255)url models.URLField()panels [FieldPanel(name),FieldPanel(url),]然后related_links 将作为跨所有页面类型的关联可用尽管它仍然只能在包含了 InlinePanel 在其面板定义中的页面类型上进行编辑。对于其他页面类型相关链接集将保持为空。 使用页面 Wagtail 使用 Django 的多表继承功能允许在同一树中使用多个页面模型。 每个页面都被添加到 Wagtail 内置的 Page 模型和用户定义的模型例如之前创建的 BlogPage 模型。 页面可以以两种形式存在于 Python 代码中即 Page 的实例或页面模型的实例。 在处理多个页面类型时通常会使用 Wagtail 的 Page 模型的实例这不会让你访问任何特定于其类型的字段。 # Get all pages in the databasefrom wagtail.models import PagePage.objects.all() [Page: Homepage, Page: About us, Page: Blog, Page: A Blog post, Page: Another Blog post]在处理单个页面类型时可以使用用户定义模型的实例。这样可以访问 Page 中的所有字段以及该类型的任何用户定义字段。 # Get all blog entries in the databaseBlogPage.objects.all() [BlogPage: A Blog post, BlogPage: Another Blog post]可以使用 .specific 属性将 Page 对象转换为其更具体的用户定义等效项。这可能会导致额外的数据库查找。 page Page.objects.get(titleA Blog post)page Page: A Blog post# Note: the blog post is an instance of Page so we cannot access body, date or feed_image page.specific BlogPage: A Blog post
http://www.w-s-a.com/news/501350/

相关文章:

  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色
  • 大型电商网站开发金融企业网站建设公司
  • 成都营销型网站建设价格化妆品品牌推广方案
  • 深圳公司手机网站制作苏州网站推广哪家好
  • 网站建设开发方式包括购买学校网站建设费计入什么科目
  • 做简单网站的框架图中小微企业查询平台
  • 哪些网站可以免费做产品推广建设建设部网站
  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司
  • 网站建设公司怎么算专业js网站分页怎么做
  • 网和网站的区别phpcms和帝国cms哪个好
  • wordpress改网站名字长沙网络营销外包
  • 宝塔怎么做第二个网站网站内容设计遵循的原则有
  • 网站违反了 google 质量指南免费ppt模版网站
  • 郑州网站建设郑州网站建设成都那家网站建设好
  • 温州网站排名优化公司如何招聘软件网站开发人员
  • 成都 网站建设公司哪家好襄阳行业网站建设
  • wordpress 调用时间做网站seo的公司哪家好
  • 手机上网站搭建网站账户系统
  • 西乡网站的建设柳州建站
  • 宁夏网站建设怎么样互联网 网站设计
  • 成都关键词seo推广平台手机端关键词排名优化软件
  • 学做软件的网站卡盟平台
  • 网站构建建设案例展示关于做服饰网站的首页
  • 如何建设网站论坛凡科建站手机版登录
  • 建设银行门户网站惠州公司网站建设价格