django是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django是啥相关的知识,希望对你有一定的参考价值。

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVT的框架模式,即模型M,视图V和模板T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

Django 项目是一个Python定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

    用于创建模型的对象关系映射

    为最终用户设计的完美管理界面

    一流的 URL 设计

    设计者友好的模板语言

    缓存系统。

    Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。

    Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

    由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者 。

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。

参考技术A

Django是用Python开发的一个免费开源的Web框架,提供了许多网站后台开发经常用到的模块,使开发者能够专注于业务部分。并且囊括的Web应用部分可以用于快速搭建高性能、优雅的网站。并且提供了通用Web开发模式的高度抽象,通过DRY的理念为频繁进行的编程作业提供了快速解决方法。

Django能在开源发行之后吸引众多追随者,离不开它所具备的以下优点:

①齐全的功能。自带大量常用工具和框架,可轻松、迅速开发出一个功能齐全的Web应用。

②完善的文档。Django已发展十余年,具有广泛的实践案例,同时Django提供完善的在线文档,Django用户能够更容易地找到问题的解决方案。

③强大的数据库访问组件。Django自带一个面向对象的、反映数据模型与关系型数据库间的映射关系的映射器,开发者无须学习SQL语言即可操作数据库。

④灵活的URL映射。Django提供一个基于正则表达式的URL分发器,开发者可灵活地编写URL。

⑤丰富的模板语言。Django模板语言功能丰富,支持自定义模板标签;Django也支持使用第三方模板系统,如jinja2等。

⑥健全的后台管理系统。Django内置了一个后台数据管理系统,经简单配置后,再编写少量代码即可使用完整的后台管理功能。

⑦完整的错误信息提示。Django提供了非常完整的错误信息提示和定位功能,可在开发调试过程中快速定位错误或异常。

⑧强大的缓存支持。Django内置了一个缓存框架,并提供了多种可选的缓存方式。

⑨国际化。Django包含了一个国际化系统,Django组件支持多种语言。

Django 中的“蛞蝓”是啥?

【中文标题】Django 中的“蛞蝓”是啥?【英文标题】:What is a "slug" in Django?Django 中的“蛞蝓”是什么? 【发布时间】:2010-09-30 10:30:28 【问题描述】:

当我阅读 Django 代码时,我经常在模型中看到所谓的“slug”。我不太确定这是什么,但我知道它与 URL 有关。这个蛞蝓应该如何以及何时使用?

(我在this glossary中阅读了它的定义。)

【问题讨论】:

若要立即了解,请查看您所在网站的 URL:https://***.com/questions/id/slug 【参考方案1】:

来自here。

“蛞蝓”是一个报纸术语,但什么 这意味着这是最后一点 网址。例如,一个带有 标题,“A bit about Django”会 变成,“有点关于 django” 自动(当然,您可以 如果您不喜欢 自动生成的 slug)。

【讨论】:

【参考方案2】:

它是 URL 的描述性部分,用于使其更具人性化描述性,但 Web 服务器不一定需要 - 在 What is a "slug" in Django? 中,slug 是 'in-django-what-is-a-slug' ,但 slug 不用于确定page served(至少在此站点上)

【讨论】:

【参考方案3】:

“slug”是一种生成有效 URL 的方法,通常使用已经获得的数据。例如,slug 使用文章的标题来生成 URL。我建议通过给定标题(或另一条数据)的函数来生成 slug,而不是手动设置它。

一个例子:

<title> The 46 Year Old Virgin </title>
<content> A silly comedy movie </content>
<slug> the-46-year-old-virgin </slug>

现在让我们假设我们有一个 Django 模型,例如:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)

您将如何使用 URL 和有意义的名称引用此对象?例如,您可以使用 Article.id,这样 URL 将如下所示:

www.example.com/article/23

或者,您可能希望像这样引用标题:

www.example.com/article/The 46 Year Old Virgin

由于 URL 中的空格无效,因此必须将其替换为 %20,这会导致:

www.example.com/article/The%2046%20Year%20Old%20Virgin

这两种尝试都没有产生非常有意义、易于阅读的 URL。这样更好:

www.example.com/article/the-46-year-old-virgin

在此示例中,the-46-year-old-virgin 是一个 slug:它是通过将所有字母向下大小写并用连字符 - 替换空格从标题创建的。

另请参阅此网页的 URL 以获取另一个示例。

【讨论】:

很好的描述,但是要补充一点:SlugField 并不能保证开箱即用的唯一性,所以如果默认使用它,这是一个更好的 URL:www.example.com/article/the-40 -year-old-virgin/23/ 其中“23”是 article.id,是实际用于查询的内容(也比在 slug 上查询更快)。 我发现 www.example.com/article/23/the-40-year-old-virgin 更容易阅读。 如果您根据 id 提供内容,请决定是检查 slug 是否与内容匹配(如果不匹配则返回 404)或完全忽略它。我不认为有什么是最好的,搜索引擎优化的一般规则。如果您在浏览器中输入***.com/questions/427102/…,SO 仍会显示此页面。 @Eno 确实不需要隐藏数据库 ID - 假设您的所有 URL 无论如何都是公开的。 @Eno 为 SEO 和永久链接 nicey-ness 添加了 slug。 ID 用于索引查找。 *** 的 SEO 非常出色——他们正是使用这种策略。您的论点是“隐藏数据库 ID”,您现在已将其转为“SEO”。怎么了?【参考方案4】:

“蛞蝓”一词来自报纸制作领域。

这是在制作过程中给故事起的非正式名称。随着故事从节拍记者(假设这些甚至存在?)到编辑再到“印刷机”,这就是它所引用的名称,例如,“有你修复了“凯特和威廉”故事中的这些错误?”。

某些系统(例如 Django)使用 slug 作为 URL 的一部分来定位故事,例如 www.mysite.com/archives/kate-and-william

甚至 Stack Overflow 本身也会这样做,使用 GEB-ish(a) 自我引用 https://***.com/questions/427102/what-is-a-slug-in-django/427201#427201,尽管您可以将 slug 替换为 blahblah,它仍然会发现它没问题。

它甚至可以追溯到更早的时候,因为剧本在每个场景的开头都有“辅助线”,这基本上设置了那个场景的背景(地点、时间等)。它非常相似,因为它是以下内容的概要或序言。

在 Linotype 机器上,slug 是由单个字母形式创建的单线金属片。通过为整行制作单个 slug,这大大改进了旧的逐字符合成。

虽然以下内容纯属猜想,但 slug 的早期含义是指伪造的硬币(必须以某种方式压制)。我可以设想将这种用法转变为印刷术语(因为必须使用原始字符来压制 slug),然后从那里从“金属片”的定义变为“故事摘要”的定义。从那里,从正确的印刷到在线世界仅一步之遥。


(a) “哥德尔·埃舍尔,巴赫”,作者 Douglas Hofstadter,我(至少)认为这是伟大的现代智力作品之一。您还应该看看他的另一部作品“Metamagical Themas”。

【讨论】:

【参考方案5】:

如果我可以提供一些历史背景:

“slug” 一词与铸造金属(在本例中为铅)有关,印刷字体就是由这种金属制成的。然后,每张纸的字体工厂都会定期重新熔化并在新模具中重铸,因为经过多次印刷后,它们会磨损。像我这样的学徒在那里开始了他们的职业生涯,并一路走到了顶峰(不再)。

排版必须以反向的方式撰写文章的文本,并以明智的方式堆叠前导字符。所以在印刷时,这些字母会直接在纸上。所有的印刷版都可以像印刷版一样快速阅读镜像的报纸。因此,蛞蝓,(如蜗牛)和缓慢的故事(最后被修复)很多都在板凳上等待,仅通过他们的第一个字母来识别,大部分是整个标题通常更易读。一些“热门”新闻在板凳上等着,可能在最后一分钟更正,(晚报)在最后一次组装和最终印刷之前。

姜戈从堪萨斯州劳伦斯杂志的办公室出来。可能一些印刷术语仍然存在。 来自法国的 A-django-modal-&-friendly-old-slug-boy-。

【讨论】:

【参考方案6】:

还可以在 django-admin 上进行自动 slug。在 ModelAdmin 中添加:

prepopulated_fields = 'slug': ('title', )

在这里:

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug')
    search_fields = ('content', )

    prepopulated_fields = 'slug': ('title', )

【讨论】:

【参考方案7】:

蛞蝓是一个报纸术语。 slug 是某事物的短标签,仅包含字母、数字、下划线或连字符。它们通常用于 URL。 (在 Django 文档中)

Django 中的 slug 字段用于为您动态创建的网页存储和生成有效的URLs。

就像您在 Stack Overflow 上添加此问题并生成动态页面的方式一样,当您在地址栏中看到时,您会看到您的问题标题用“-”代替空格。这正是蛞蝓场的工作。

你输入的标题是这样的 -> Django 中的“slug”是什么?

在将其存储到 slug 字段时,它会变成“what-is-a-slug-in-django”(请参阅​​此页面的 URL)

【讨论】:

【参考方案8】:

Slug 是特定内容的 URL 友好短标签。它只包含字母、数字、下划线或连字符。 Slugs 通常与相应的内容一起保存,并作为 URL 字符串传递。

Slug 可以使用 SlugField 创建

例如:

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)

如果你想使用title作为slug,django有一个简单的函数叫做slugify

from django.template.defaultfilters import slugify

class Article(models.Model):
    title = models.CharField(max_length=100)

    def slug(self):
        return slugify(self.title)

如果需要唯一性,请在 slug 字段中添加unique=True

例如,从前面的例子:

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)

你懒得做 slug 过程吗?别担心,这个插件会帮助你。 django-autoslug

【讨论】:

【参考方案9】:

蛞蝓

某事物的短标签,仅包含字母、数字、下划线或连字符。它们通常用于 URL。例如,在典型的博客条目 URL 中:

https://www.djangoproject.com/weblog/2008/apr/12/spring/ 最后一点(弹簧)是蛞蝓。

【讨论】:

【参考方案10】:

简而言之,slug 可以帮助摆脱那些带有有效网址的丑陋网址,例如电子商务网站中的示例,而不是将网址显示为www.myecom.com/product/5432156,我可以在 slug 的帮助下将其显示为www.myecom.com/product/iphone11

【讨论】:

【参考方案11】:

它是一种生成有效 URL 的方式,一般使用已经获得的数据。例如,使用文章的标题生成 URL。

【讨论】:

【参考方案12】:

slug 是 URL 的一部分,它以易于阅读的形式标识网站上的特定页面。

例如,/building-your-1st-django-site

只有蛞蝓包含:

字母:a-z,A-Z 数字:0-9 下划线:_ 连字符:-

【讨论】:

以上是关于django是啥的主要内容,如果未能解决你的问题,请参考以下文章

覆盖 django 视图的正确方法是啥

Django 中的“蛞蝓”是啥?

Django 中的“蛞蝓”是啥?

Django 中的“蛞蝓”是啥?

Django 中的“蛞蝓”是啥?

Django 中的“蛞蝓”是啥?