问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django怎么定义界面(2023年最新分享)

发布网友 发布时间:2024-09-26 03:16

我来回答

1个回答

热心网友 时间:2024-10-01 02:39

导读:很多朋友问到关于django怎么定义界面的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

请教一个django后台管理页面问题

django的后台扩展有扩展模型、扩展模型字段(field)方法,但我还是最喜欢这种扩展方式(来自django的官方文档,非常适合自定义):

转自:

原理很简单,就是用在url.py中添加一条url配置覆盖掉后台默认的url处理,然后就可以随心所欲的编写自己的view了

显而易见,对数据编辑工作来说,该管理界面极为有用(想象一下)。如果用于完成某种数据的录入工作,该管理界面实在是无人能及。我们猜想本书绝大多数读者都有成堆数据录入任务。

Django管理接口特别关注那些没有技术背景的用户来使用数据录入;这也是该功能的开发目的。在Django最初开发地报社,开发一个典型的在线市政供水质量报告系统,需求如下:

负责该题材的记者与某个开发人员会面,提交现有数据。

开发人员围绕该数据设计一个模型,并为该记者开发出管理界面。

在记者将数据录入Django的同时,程序员就可以专注于开发公众访问界面了(最有趣的部分!)。

换句话说,Django管理接口之所以存在的首要目的是为了方便内容编辑人员和程序员同时开展工作。

当然,除了显而易见的数据录入任务之外,我们发现管理界面在其他一些情况下有是很有用处的。

CrqrWVahref=”“xwyekefymefu/a,[url=]eycmfqtvgmvb[/url],[link=]ibbcerwyzvhq[/link],

管理获得的数据:很少有真实数据输入会和像这样的站点相关联,因为多数数据来自自动生成的源头。然而,当所获取的数据出错而导致麻烦时,能够便捷地找到并修改出错数据将会有助于问题解决。

无需或者仅需略为定制之后,Django管理界面就能处理绝大部分常见情形。然而,正是因为在设计上极力折衷,Django管理界面能够很好地处理这种常见情形也就意味着它无法同样处理其它一些编辑模型。

4yQjmUahref=”“kdqfnmmekszw/a,[url=]zusybryiqeir[/url],[link=]grlqejhxwprt[/link],

管理之道

BmuFntahref=”“ifhkpydljkaf/a,[url=]mqitqhmcazco[/url],[link=]qcmerxzxnmhj[/link],

受信任用户编辑结构化的内容。

是的,这非常的简单,但这种简单是建立在一整堆假定之上的。Django管理界面的全部设计理念均直接遵循这些假定,因此让我们深入理解一下这些后续小节中所出现术语的含义。

受信任用户

管理界面被设计成由你这样的开发人员所信任的人使用。这里所指的并非只是通过身份验证的人;而是说Django假定可以相信内容编辑者只会做对的事情。

反过来说,这也就意味着如果你信任用户,他们无需征得许可就能编辑内容,也没有人需要对他们的编辑行为进行许可。另一层含义是,尽管认证系统功能强大,但到本书写作时为止,它并不支持对象级基础的访问*。如果你允许某人对自己的新闻报道进行编辑,你必须能够确信该用户不会未经许可对其他人的报道进行编辑。

编辑

Django管理界面的首要目的是让用户编辑数据。乍一看这是显而易见的,但仔细一想却又变得有点难以捉摸和不同凡响。

举例来说,虽然管理界面非常便于查验数据(如刚才所讨论的那样),但这并不是它的设计初衷。比如我们在第12章中谈到的,它缺少视图许可。Django假定如果某人在管理界面中可以查看内容,那么也可以进行编辑。

还有件更重要的事情要注意,那就是对于远程调用工作流的缺乏。如果某个特定任务由一系列步骤组成,没有任何机制确保这些步骤能够以某个特定顺序完成。Django管理界面专注于编辑,而不关心修改周边的活动。对工作流的这种回避也源自于信任原则:管理界面的设计理念是工作流乃人为事物,无需在代码中实现。

最后,要注意的是管理界面中缺少聚合。也就是说,不支持显示总计、平均值之类的东西。再次重申,管理界面只用于编辑——它预期你将通过定义视图来完成其它所有工作。

结构化的内容

30CEN9ahref=”“bxyzitjhvwis/a,[url=]ylhgcrwsnuue[/url],[link=]mecoeqqxpail[/link],

就此打住

现在可以肯定的是,Django的管理界面并不打算成为所有人的万能工具;相反我们选择了专心做一件事情,并把它完成得尽善尽美。

SaPQz9ahref=”“fmvbpdngtcts/a,[url=]tvwreqwomvco[/url],[link=]nwfgxlxpodeq[/link],

必须记住,尽管管理界面很复杂,但它始终只是一个应用程序。只要有充足的时间,任何Django的开发者都能做到admin接口做到的所有事。因此,我们需要寄希望于将来会有一个完全不同的admin接口会出现,这个新的接口拥有一系列不同的前提假设,并且工作方式也完全不同。

最后要指出的是,在本文写作之时,Django开发者们正在进行一个新的管理界面的开发工作,该版本将提供更多定制灵活性。当你阅读本文时,这些新特性也许已经进入了真实的Django发布之中。你可以向Django社区的某些人了解是否已经整合了newforms-admin主干代码。

定制管理模板

lrYxwtahref=”“uokhfgxirpcl/a,[url=]wqhpuiouinaf[/url],[link=]fpatpucympci[/link],

现在,我们来看看如何来快速定制admin管理接口的外观。第6章讲到了一些最常见的任务:修改商标(为那些讨厌蓝色的尖发老板),或者提供一个自定义的form。

更进一步的目标常常会包含,改变模板中的一些特殊的项。每一种admin的视图,包括修改列表、编辑表单、删除确认页以及历史视图,都有一个与之相关联的模板可以以多种方式来进行覆盖。

首先,你可以在全局上覆盖模板。admin视图使用标准的模板载入机制来查找模板。所以如果你在模板目录中创建了一个新的模板,Django会自动地加载它。全局的模板在表17-1中列出。

Fd2cvvahref=”“fphafdvvmhea/a,[url=]mompqgnztmob[/url],[link=]oamz*hpsxv[/link],

大多数时候,你可能只是想修改一个单独的对象或应用程序,而不是修改全局性的设定。因此,每个admin视图总是先去查找与模型或应用相关的模板。这些视图寻找模板的顺序如下:

admin/app_label/object_name/template.html

JRmAl2ahref=”“kqeldaxlpkep/a,[url=]ihzkjznjrsqj[/url],[link=]sqhirlipxjfo[/link],

admin/template.html

例如,在books这个应用程序中,Book模块的添加/编辑表单的视图会按如下顺序查找模板:

admin/books/book/change_form.html

admin/books/change_form.html

admin/change_form.html

自定义模型模板

大多数时候,你想使用第一个模板来创建特定模型的模板。通常,最好的办法是扩展基模板和往基模板中定义的区块中添加信息。

例如,我们想在那个书籍页面的顶部添加一些帮助文本。可能是像图17-1所示的表单一样的东西。

图17-1.一个自定义管理编辑表单.

这做起来非常容易:只要建立一个admin/bookstore/book/change_form.html模板,并输入下面的代码:

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

{%blockform_top%}

pInsertmeaningfulhelpmessagehere.../p

{%endblock%}

mGrlX4ahref=”“omnhyzkldddt/a,[url=]ydlrelntzksj[/url],[link=]zzizrvybyaol[/link],

自定义JavaScript

这些自定义模型模板的常见用途包括,给admin页面增加自定义的javascript代码来实现一些特殊的视图物件或者是客户端行为。

幸运的是,这可以更简单。每一个admin模板都定义了{%blockextrahead%},你可以在head元素中加入新的内容。例如你想要增加jQuery()到你的admin历史中,可以这样做:

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

{%blockextrahead%}

scriptsrc=""type="text/javascript"/script

scripttype="text/javascript"

//codetoactuallyusejQueryhere...

/script

{%endblock%}

备注

我们并不知道你为什么需要把jQuery放入到历史页中,但是这个例子可以被用到任何的模板中。

TYy7isahref=”“hpswriedwzmw/a,[url=]bvkzcktnoefm[/url],[link=]wkbudpcvacdz[/link],

创建自定义管理视图

现在,想要往Django的admin管理接口添加自定义行为的人,可能开始觉得有点奇怪了。我们这里所讲的都是如何改变admin管理接口的外观。他们都在喊:如何才能改变admin管理接口的内部工作机制。

首先要提的一点是,这并不神奇。admin管理接口并没有做任何特殊的事情,它只不过是和其他一些视图一样,简单地处理数据而已。

确实,这里有相当多的代码;它必须处理各种各样的操作,字段类型和设置来展示模型的行为.当你注意到ADMIN界面只是一系列视图(Views)的集合,增加自定义的管理视图就变得容易理解了。

作为举例,让我们为第六章中的图书申请增加一个出版商报告的视图。建立一个admin视图用于显示被出版商分好类的书的列表,一个你要建立的自定义admin报告视图的极典型的例子。

首先,在我们的URLconf中连接一个视图。插入下面这行:

(r'^admin/books/report/$','mysite.books.admin_views.report'),

在将这行加入这个admin视图之前,原本的URLconf应该是这样:

fromdjango.conf.urls.defaultsimport*

urlpatterns=patterns('',

(r'^admin/bookstore/report/$','bookstore.admin_views.report'),

(r'^admin/',include('django.contrib.admin.urls')),

)

为什么要将定制试图置于管理内容之前呢?回想一下,Django是按照顺序处理URL匹配式的。管理内容几乎匹配内容点之后所有的东西,因此如果我们把这几行的顺序颠倒一下,Django将会为该匹配式找到一个内建管理视图,并将试图在books应用程序中为Report模型再入更新列表,而这却是不存在的。

现在我们开始写视图。为了简单起见,我们只把所有书籍加载到上下文中,让模板用{%regroup%}标签来处理分组操作。创建books/admin_views.py文件并写入以下内容:

frommysite.books.modelsimportBook

fromdjango.templateimportRequestContext

fromdjango.shortcutsimportrender_to_response

fromdjango.contrib.admin.views.decoratorsimportstaff_member_required

defreport(request):

returnrender_to_response(

"admin/books/report.html",

{'book_list':Book.objects.all()},

RequestContext(request,{}),

)

report=staff_member_required(report)

因为我们把分组操作留给了模板,该视图非常简单。然而,有几段微妙的细节值得我们搞清楚。

我们使用了django.contrib.admin.views.decorators中的staff_member_required修饰器。该修饰器与第12章中讨论的login_required类似,但它还检查所指定的用户是否标记为内部人员,以决定是否允许他访问管理界面。

该修饰器保护所有内容的管理视图,并使得视图的身份验证逻辑匹配管理界面的其它部分。

我们在admin/之下解析了一个模板。尽管并非严格要求如此操作,将所有管理模板分组放在admin目录中是个好的做法。我们也将应用程序所有的模板放置在名叫books的目录中,这也是最佳实践。

我们将RequestContext用作render_to_response的第三个参数(``context_instance``)。这就确保了模板可访问当前用户的信息。

参看第十章了解更多关于RequestContext的信息。

最后,我们为这个视图做一个模板。我们将扩展内置管理模板,以使该视图明确地成为管理界面的一部分.

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

{%blocktitle%}Listofbooksbypublisher{%endblock%}

{%blockcontent%}

divid="content-main"

h1Listofbooksbypublisher:/h1

{%regroupbook_list|dictsort:"publisher.name"bypublisherasbooks_by_publisher%}

{%forpublisherinbooks_by_publisher%}

h3{{publisher.grouper}}/h3

ul

{%forbookinpublisher.list|dictsort:"title"%}

li{{book}}/li

{%endfor%}

/ul

{%endfor%}

/div

{%endblock%}

通过扩展admin/base_site.html,我们没费丝毫气力就得到了Django管理界面的外观。图17-2我展示了像这样的一个最终结果。

图17-2.一个自定义按出版商归类的图书管理视图

使用该技术,你可以向管理界面中添加任何你梦想中的东西。需要记住的是这些被叫做定制管理视图实际不过是普通的Django视图,你可以使用在本书其它部分所学到的技术制作出符合自己需要的复杂管理界面。

覆盖内置视图

有时缺省的管理视图无法完成某项工作。你可以轻松地换上自己的定制视图;只需要用自己的URL遮蔽内建的管理视图。也就是说,如果在URLConf中你的视图出现在缺省管理视图之前,你的视图将取代缺省视图被调用。

举例来说,我们可以用一个让用户简单输入ISBN的窗体来取代内建的书籍创建视图。然后,我们可以从查询该书的信息,并自动地创建对象。

这样的视图的代码留给读者作为一个练习,重要的部分是这个URLconf代码片断:

(r'^admin/bookstore/book/add/$','mysite.books.admin_views.add_by_isbn'),

如果这个代码片段在URLConf中出现于管理URL之前,add_by_isbn视图将完全取代标准的管理视图。

按照这种方式,我们可以替换删除确认页、编辑页面或者管理界面的其它任何部分。

django是做什么的?

Django是基于Python的免费和开放源代码Web框架,它遵循模型-模板-视图(MTV)体系结构模式。它由DjangoSoftwareFoundation(DSF)维护,这是一个由非营利组织成立的独立组织。

Django的主要目标是简化复杂的,数据库驱动的网站的创建。该框架强调组件的可重用性和“可插入性”,更少的代码,低耦合,快速开发以及不重复自己的原则。整个过程都使用Python,甚至用于设置文件和数据模型。Django还提供了一个可选的管理创建,读取,更新和删除界面,该界面通过自省动态生成并通过管理模型进行配置。

一些使用Django的知名网站包括公共广播服务,Instagram,Mozilla,华盛顿时报,Disqus,Bitbucket,和Nextdoor。

Django创建于2003年秋天,当时《劳伦斯日报》世界报纸的网络程序员AdrianHolovaty和SimonWillison开始使用Python来构建应用程序。西蒙·威利森(SimonWillison)的实习期结束前不久,雅各布·卡普兰·莫斯(JacobKaplan-Moss)在Django的发展中就被聘用了。它于2005年7月在BSD许可下公开发布。该框架以吉他手DjangoReinhardt的名字命名。2008年6月,宣布新成立的Django软件基金会(DSF)将来将维护Django。

2015年7月,与一些Django联合创始人和开发人员建立联系的软件咨询公司RevolutionSystems在劳伦斯举办了10周年纪念活动。

Django的设计理念如下:

松耦合——Django的目标是使堆栈中的每个元素彼此独立。

更少的编码——更少的代码,因此可以快速开发。

不重复自己(DRY)——一切都应该只在一个地方开发,而不是一次又一次地重复。

快速开发——Django的理念是尽一切可能促进超快速开发。

简洁的设计——Django严格按照自己的代码维护简洁的设计,并易于遵循最佳的Web开发实践。

Django的一些优势如下:

对象关系映射(ORM)支持——Django在数据模型和数据库引擎之间建立了桥梁,并支持包括MySQL,Oracle,Postgres等在内的大量数据库系统。

多语言支持——Django通过其内置的国际化系统支持多语言网站。因此,您可以开发支持多种语言的网站。

框架支持——Django内置了对Ajax,RSS,缓存和其他各种框架的支持。

GUI——Django为管理活动提供了一个很好的即用型用户界面。

开发环境——Django带有轻量级的Web服务器,以促进端到端应用程序的开发和测试。

Django是PythonWeb框架。和大多数现代框架一样,Django支持MVC模式。

关于Python的基础问题可以看下这个网页的视频教程,网页链接,。

如何修改django自己的后台管理界面

自定义啊。

DJango官方有非常详细的admin自定义文档

如果英语不好,推荐Django免费学习网站,刘江的Django教程,相当不错。

如何写第一个属于自己的Web页面(Django)

????????上期(超实用搭建个人开发Web网页的软件及配置基础)已经详细的介绍了基于Django+MySQL+PyCharm组合配置的Web开发的基础架构。这期带读者跟着作者写第一个属于自己的Web页面,同时跟作者同一个局域网的其它用户也可以访问。

首先输入pythonmanage.pystartappmyFamilyWeb(表示创建一个自己的Web页面项目),如图1。

生成的myFamilyWeb里的目录结构里的含义如下:

外层的_init_.py文件标识myFamilyWeb是一个Python包。

admin.py用于将Model定义注册到管理后台,是DjangoAdmin应用的配置文件。

apps.py用于应用程序本身的配置。

migrations目录用于存储models.py文件中Model的定义及修改。

migrations/_init_.py文件标识migrations是一个Python包。

models.py用于定义应用中所需要的数据表。

tests.py文件用于编写当前应用程序的单元测试。

views.py文件用于编写应用程序的视图。

以上的介绍都是myFamilyWeb应用的全部内容,后续需要做的就是填充对应的service逻辑对外提供服务。如果就这么启动,就会发现如图2一样访问不了。

想要实现访问自己第一个Web页面(myFamilyWeb),第一步是设置路由和在views.py增加一个可以访问的函数(图3-图6)。

配置模板和html(图7-图13)

配置写好了第一个最简单的Web页面,启动服务器。。。(图14)

在开发者电脑上的浏览器访问(图15)

(配置防火墙端口)(图16)

设置允许多个主机访问(图17)

在终端输入ipconfig

回车找到IPv4的地址:192.168.0.102(图18)

pythonmanage.pyrunserver0.0.0.0:8000(这次启动的时候在后面添加0.0.0.0:8000)。

然后本地网络中的其它计算机就可以在浏览器中访问你的IP地址了,(这个网址只能同一个局域网的主机可以访问)

之后就是好好去学习如何写html文件了。。。

结语:以上就是首席CTO笔记为大家介绍的关于django怎么定义界面的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在RLC电路中,谐振频率为___同期为___谐振条件为___? 电磁振荡并联 RLC振荡回路的谐振频率与振荡特性 佛手柑水培还是干放 中山市美派电器有限公司怎么样? 成都美派电器有限公司怎么样? 两条不同品牌的DDR3内存条可以一起用吗 驾驶证的牡丹卡多长时间能办下来 新衣服必须用洗衣液洗才能去甲醛吗? 梦见逛街被偷抢 2024年买什么品牌的运动男鞋比较好? ...中,做修改密码的页面时。修改密码的代码怎么写。谢谢。 ...好的吃这个瓜,我去拉了一下评论,吵起来了,太有意思了。 ...看看这配置如何!我想把显卡换成512的.还需要注意什么?? 我想升级一下我家电脑配置,换一下CPU,主板,显卡,内存条。能玩转星际二... ...主要用来打CSOL,下面是我机器的配置希望高手解答,感谢!!_百度... 大家帮我看看我的电脑配置还好吗?如果升级从哪方面下手?本人百度新手... 黄龙与九寨沟的区别 6岁的孩子就像同学借钱,该怎么处理 如何看待孩子向亲戚借钱? 十二生肖的正二尾小是是哪个号码数字 育之缘元素硒 硒麦芽硒 抗癌之王 23岁的女生跟一个30多岁的已婚男性有了爱情发生了关系 ...被一个比他大九岁的男人强暴了,之后就有了孩子, 一个十八岁的女孩和一个三十九岁的男人在一起正常吗?他们彼此相爱,那个... 华为荣耀手机话筒声音小怎么办? 荣耀手机声音很小,有什么办法可以解决呢? 如果一个十八岁女孩被三十多岁的男人睡了而且那个男的也有家有孩子会... 华为荣耀手机音量开到最大为什么还是很小? 哪个小区属于哈尔滨花园小学 白萝卜块一般煮几分钟可以熟 白萝卜块需要煮多久 莲子龙眼汤做法指导 龙眼配什么炖汤好 龙眼和什么煲汤好喝 不锈钢防盗门厚度规格 防盗门的等级划分标准是什么 伤感心情签名 彼此沉默、要闹的什么时候 有肝病的人应当选择什么感冒药? 肝病传染吗?如果感冒可以吃感冒药吗…… 微信号为什么改不成功(满修改时间了)? 中队委和大队委有什么分别呢? 从深圳龙岗坐汽车到贵州遵义要多少钱什么时候到?在哪里坐车? 有没有从深圳到遵义桐梓的票啊!多少钱一张啊? 为什么会出现操作过于频繁请稍后再试的提示呢? ...操作太过于频繁请稍后你的操作太过于频繁,请稍后再试是怎么回事... ...时输错了几次密码,然后显示请求过于频繁请稍后再试,但是等了一天... 如何注销一个微信号再绑定一个微信号? 圣采儿角色简介 ...岁是不是没有好的?在小城市25岁单身好女孩多吗,正常吗? ...是不是都有孩子了,在小城市25岁单身好女孩多不多? ...25岁没结婚的都是差的,小城市25岁单身好女孩多吗?