电脑硬件入门umd(电脑umb是什么键位)

Mark wiens

发布时间:2022-09-23

电脑硬件入门umd(电脑umb是什么键位)

 

在Django的管理网站是伟大的-功能全面,使用方便,安全性设计,坚如磐石......,有点难看,这可能是一个负面的东西,当你想它的外观整合和感觉你的网站的其余部分. 让我们解决这个问题。

如果它没有坏……

默认的 Django 管理员。(来源)

假设您刚刚使用 Django 和 Vue.js 制作了一个 Web 应用程序原型。对于各种情况,按原样将 Django 的管理员用于后台,甚至在适当设置权限后将其处理给您的客户,都很好。毕竟,它运行得非常好,并且可以使用内置工具进行大量自定义以涵盖许多情况。

那么,又何必呢?

修改管理员外观的原因

但是,有许多正当理由使集成更进一步:

  • 品牌:想要公司的名称和颜色而不是Django 管理并没有错(并且为了记录,这符合 Django 的BSD 许可证)。
  • 主站点和管理员之间的无缝集成:您可能希望能够在导航站点时在后台功能之间转换,反之亦然,通过使用通用导航栏。
  • 美化:虽然 admin 看起来不错,它甚至从 v2 开始就实现了响应式网页设计原则(它在移动和桌面上都运行良好),但精心设计的样式表可以做很多事情来使它看起来更好。
  • 绕过功能:您可能还想为管理员创建自定义下拉菜单,显示您实际使用的选项并从用户界面隐藏您并不真正需要的内容,这可以提供更好的用户体验。

一个实际例子

对于这个示例,为了不重复我们自己,我们将继续我们为使用 Django 和 Vue.js 构建 Web 应用程序原型一文开始的简单发布 Web 应用程序。

简而言之:

  • 具有两个模型的 Django 应用程序:
  • Article带有字段nameauthor(链接),content以及slug
  • Author: 有字段nameslug
  • 一个称为查询两个模型中的所有注册表的视图frontend
  • 一个名为template.
  • 使用Vue Router和Vuex实现Vue.js以实现反应式可扩展接口。

本期我们不会特别关注 Vue.js 的集成,这里也不会修改。

基本模板

来源

Django 模板非常通用且功能强大,可以在应用程序级别(Django 站点的一个组件)或站点级别创建,甚至可以覆盖 Django 附带的模板(这就是我们在这里要做的) )。

来源

我们创建了一个基本模板,该模板链接到Bootstrap的 JavaScript 和样式表,以及它的配套工具jQuery和Popper。

这是我们用于主站点的基本模板,与我们通常用于任何其他 Django 站点的基本模板没有任何不同:

html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1, shrink-to-fit=no"><linkrel="stylesheet"href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"crossorigin="anonymous"><title>Django and Vue.jstitle>head><bodyclass="bg-light"><divclass="bg-white container"><h1>Prototyping a Web App with Django and Vue.jsh1>div><scriptsrc="https://unpkg.com/vue">script><scriptsrc="https://unpkg.com/vue-router">script><scriptsrc="https://code.jquery.com/jquery-3.4.1.slim.min.js"integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"crossorigin="anonymous">script><scriptsrc="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"crossorigin="anonymous">script><scriptsrc="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"crossorigin="anonymous">script>body>html>

接下来,我们将把它集成到管理中,并在两端添加一个共享的导航栏——主站点和后台!

将主 UI 模板与管理员集成

如前所述,我们可以覆盖模板,包括管理员的模板。然而,由于 Django 的设计,不出所料,主站点和后台是两个不同的系统,每个都有自己的模板、样式表和contrib包。因此,即使它们几乎相同,我们也需要维护两个不同的模板——一个用于主 UI,另一个用于管理。

一般启用模板目录

首先,我们需要告诉 Django 我们将在基本目录中存储被黑的管理模板的位置。

我们需要编辑myproject/settings.py. 首先,找到TEMPLATES常量和这个DIRS键:

DIRS: [],

将该代码更改为:

DIRS: [os.path.join(BASE_DIR,templates)],

包装管理模板(admin/base黑客)

如果我们只是想进行外观更改,例如将自定义样式表传递给管理员,或删除/替换其标题,我们可以通过编辑admin/base_site模板并完全跳过当前步骤来处理。但是,如果我们想一直包装管理部分,就好像它包含在我们的主站点中一样,并且可能有一个共同的页眉和页脚,那么请继续阅读。

我们需要将 Django 复制admin/base.html到我们的模板目录中templates/admin/base.html,以便我们可以放置我们的包装器。

我们将编辑该container部分周围的代码,使其从以下内容开始:

<divid="container">(...)div>

对此:

{% block bodyheader %}{% endblock %}<divid="container">(...)div>{% block bodyfooter %}{% endblock %}

就这样!我们只是简单地创建bodyheaderbodyfooter阻止标签,以便我们可以注入将在下一步包装管理员的代码。

编写自定义管理模板(admin/base_siteHack)

然后,我们将对实际模板进行编码templates/admin/base_site.html(我们需要在项目的根目录上创建目录):

{% extends "admin/base_site.html" %}

{% block title %}Django with Bootstrap | Admin site{% endblock %}

{% block branding %}{% endblock %}
{% block breadcrumbs %}{% endblock %}

{% block bodyclass %}bg-light{% endblock %}

{% block extrastyle %}<linkrel="stylesheet"href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"crossorigin="anonymous"><style>header,.breadcrumbs{display: none; }/* Bootstrap issues with admin */* {box-sizing: unset; }div.modulecaption{caption-side: top!important; }.collapse{display: block!important; }style>{% endblock %}

{% block bodyheader %}<divclass="bg-white container"><divclass="jumbotron"><h1class="display-4">Hacking the Django Admin with Bootstraph1><pclass="lead">The<aref="https://docs.djangoproject.com/en/dev/ref/contrib/admin/">Django administration sitea>is great—full-featured, easy to use, secure by design, rock solid… and somewhat ugly, which can be something of a downside when you want to integrate it with the look-and-feel of the rest of the website. Let’s sort that out.p>div>{% endblock %}

{% block bodyfooter %}div><scriptsrc="https://code.jquery.com/jquery-3.4.1.slim.min.js"integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"crossorigin="anonymous">script><scriptsrc="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"crossorigin="anonymous">script><scriptsrc="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"crossorigin="anonymous">script>{% endblock %}

分解

到微软站点下载Bootvis.exe文件,启动它,依次选择菜单里面的Trace Optimize System,这时候系统会提示是否重新启动,选择启动,重启登录以后什么都别动,过一段时间会自动弹出一个对话框,对话框上写着系统分析的意思,你什么都别做,要一直等到提示分析完毕以后才能够操作你的系统,分析时间有点长,请耐心等待。

让我们试着解释一下我们在这里做什么:

  1. 我们告诉模板引擎我们正在扩展admin/base_site.html模板,以有效地覆盖它的一些定义。
  2. 我们利用该title块为正在浏览的管理页面自定义标题。
  3. 我们清空brandingbreadcrumbs块的内容,因为我们并不真正需要它们。
  4. 我们使用bodyclass块来设置 Bootstrap 的bg-light,就像我们在frontend模板中所做的那样。
  5. 我们使用extrastyle块来嵌入 Bootstrap 和一些 CSS 代码。一种。好的,header, .breadcrumbs { display: none; }是对数字 3 的重述;但是知道您可以同时禁用品牌和面包屑部分很有用。湾 在管理中将 Bootstrap 与 Django 的 CSS 重叠时可能会出现一些问题,因此这些是一些修复。
  6. 使用bodyheaderbodyfooter块来包装管理内容。

现在我们可以访问管理模板,我们可以进一步扩展它的样式表,或者只保留它与主 UI 的共享样式。

注意事项

我们正在维护两个不同的模板(主 UI 和管理)来完成基本相同的演示。诚然,这并不理想,因为我们明确违反了软件开发的准则之一:不要重复自己(DRY)。

正如我们所评论的,这是因为 Django 管理员被设计为与主 UI 分离。这并没有错,就像跳出框框思考也没有错一样。但是是的,这迫使我们使用两个内容几乎相同的模板。

实际上,原则上我们可以设计一个模板模式,其中包含来自主 UI 和管理的导航栏和其他常见元素,并从单一来源重用它们;但在这一点上,就本文的目的而言,这种方法有点矫枉过正。无论如何,我会为你留下这个想法。

制作共享导航栏

现在主 UI 和管理站点看起来几乎相同,我们可以进一步集成并提供通用的导航体验……甚至更进一步,在主菜单上显示一些管理选项!

这是导航栏的片段:

class="navbar navbar-expand-lg navbar-light bg-light"><ulclass="navbar-nav mr-auto"><liclass="nav-item"><aclass="nav-link text-primary"href="/author/">Go to Authorsa>li><liclass="nav-item"><aclass="nav-link text-primary"href="/article/">Go to Articlesa>li>{% if user.is_authenticated %}<liclass="nav-item dropdown"><aaria-expanded="false"aria-haspopup="true"class="font-weight-bold nav-link text-primary dropdown-toggle"data-toggle="dropdown"href=""role="button">Admina><divclass="dropdown-menu"><aclass="dropdown-item"href="/admin/myapp/author/">Manage authorsa><aclass="dropdown-item"href="/admin/myapp/article/">Manage articlesa>div>li>{% endif %}ul>nav>

请注意该dropdown-menu部分,它将负责呈现管理菜单(有关更多信息,请参阅 Bootstrap 的Navbar组件)。

我们还使用/进行条件检查,以决定是否显示管理菜单。{% if user.is_authenticated %}{% endif %}

最后,请记住,由于我们现在维护两个不同的主模板,因此我们需要将导航栏的 HTML 代码添加到 ,myapp/templates/myapp/tempalte.htmltemplates/admin/base_site.html.

额外:管理员登录屏幕

管理站点已得到处理,仍有一个松散的结局:登录屏幕。

现在我们可以变成这样:

来源

...变成这样:

我们可以通过在 中创建以下模板来完成更接近的事情templtes/admin/login.html

{% extends "admin/login.html" %}

{% load i18n static %}

{% block extrastyle %}
{{ block.super }}<style>header{background-color: transparent!important;
}style>{% endblock %}

{% block branding %}<h1><spanstyle="color: 57C5A5 !important">ActionPlanNow.comspan><br/><small>{% block head_title %}{% endblock %}small>h1>{% endblock %}

{% block content_title %}<pclass="lead"style="font-size: larger">A Simple Tool for Leaders, Coaches, and Counselors.p>{% endblock %}

分解

我们在这里做什么:

到微软站点下载Bootvis.exe文件,启动它,依次选择菜单里面的Trace Optimize System,这时候系统会提示是否重新启动,选择启动,重启登录以后什么都别动,过一段时间会自动弹出一个对话框,对话框上写着系统分析的意思,你什么都别做,要一直等到提示分析完毕以后才能够操作你的系统,分析时间有点长,请耐心等待。

  1. {{ block.super }}标签是没有告诉模板引擎,我们不是重写的内容extrastyle(我们在定义templates/admin/base_site.html模板),但我们只是简单地追加内容(请参阅模板继承以获得更多信息)。
  2. branding块允许我们将Django 管理标题更改为更有趣的内容。
  3. 我们head_title通过设置一个空定义来摆脱块。
  4. 我们使用content_title块来添加一些额外的信息。

一些注意事项

来源

就像 Bootstrap 一样,Django 管理站点也提供了自己的jQuery包,但幸运的是 Django 开发人员考虑到了这一点,并且为了避免与用户提供的脚本和库发生冲突,Django 的 jQuery 命名空间为django.jQuery. 因此,我们可以安全地包含您自己的副本(正如我们所做的那样)。

在主样式表中使用类定义时要小心,因为这也会影响管理站点,以意想不到的方式影响其功能。在这种情况下,您始终可以通过浏览器调试工具(例如Chrome DevTools、Firefox Developer Tools(特别是Page Inspector)或Safari Developer Tools)查看发生的情况。

演示和完整代码

我们在这里讨论的这个实现看起来像这样:

您可以浏览我的 GitHub 存储库luzdealba / djangovuejs 中的所有项目代码。

包起来

虽然有些人可能会声称——相当合理——没有太多需要改变 Django 的管理外观,但平滑集成站点的不同端点也是改进 UX 的一个很好的技巧,因为它可以提供两者之间的无缝过渡,甚至是更加可控的管理员导航。

这样做并不是那么困难。您需要注意的是如何包装管理员,以及如何将第三方库与您自己的 JavaScript 代码和样式表混合使用。幸运的是,您可以非常轻松地将一些集成到管理中,一些集成到主站点的其余部分,还有一些集成到两者中。

希望您对如何以不那么明显的方式进一步自定义 Django 有了一些想法!

如果您需要一个借口来构建一个 Web 应用程序,以便您可以与 Django 管理员一起玩,请查看上周关于使用 Django 和 Vue.js 构建 Web 应用程序原型的教程——它非常有趣。如果您想进一步提高 Django 技能,SitePoint Premium库为您提供了大量资源。

嘴里有溃疡,就用维生素C贴在溃疡处,等它溶化,溃疡基本就好了。

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186