本文将告诉您Django如何在后台运行以及对应于Django操作和维护的相应知识点。我希望这对您有帮助。不要忘记收集此网站。
本文目录清单:
1. Django sqlalchemy如何使用管理背景管理2.如何在服务器上部署Django项目并使其在后台运行。3.询问Django背景管理页面问题4. Django前台和后台交互问题5,Django背景如何执行线程1.Django Admin不适合最终用户使用
Django管理员是为管理员而不是最终用户设计的。Django管理员的存在是为了促进管理员添加修改并删除数据和管理站点任务。
2.列表显示
如上图所示,由于模型的默认文本是XXX对象,因此“管理员列表”页面中的默认显示也是XXX对象。如果要显示更多有用的信息,我们可以设置以下设置:
为模型编写__unicode __()方法
如果要在列表页面中显示更多项目,则需要使用list_display
__unicode()__示例:
#models.py
来自django.db导入模型
班级文章(Models.Model):
title = models.charfield(max_length = 100)
slug = model.charfield(max_length = 100)
content = model.textfield()
is_publy = model.boolenfield(默认= false)
def __unicode __(self):
返回self.title
#admin.py
来自django.contrib导入管理
从.models导入文章
admin.Site.Register(文章)
结果:
如果要显示其他项目:
#admin.py
来自django.contrib导入管理
从.models导入文章
类articleadmin(admin.modeladmin):
list_display =('title','iS_perlished')
Admin.Site.Register(文章,Articleadmin)
结果:
3.将动作添加到ModelAdmin
我们可以将方法或函数添加到modladmin中,以使管理接口更符合我们的需求。
例如,我们希望在管理接口中显示一个清晰的URL,但是当我们在模型中定义get_absolute_url()方法时,django admin为我们提供了完全不同的URL。SOWE可以通过以下方法定义URL:
#admin.py
来自django.contrib导入管理
从django.core.urlresolvers导入反向
来自django.utils.html导入format_html
从.models导入文章
类articleadmin(admin.modeladmin):
list_display =('title','iS_perbored',),),),)
readonly_fields =('show_url',)
def show_url(self,实例):
url = reververs('trict_detail',kwargs = {'pl':instance.pk})
响应= format_html(“”“ a href =” https://www.shouxicto.com/article/ {0}“文章preview/a”“”,url)
返回响应
show_url.short_descripting = u“文章预览”
#显示html标签
#对于用户提交的数据,切勿这样设置!
show_url.allow_tags = true
请注意,如果错误使用会带来隐藏的安全危害,则允许_tags属性,默认值为false。如果设置为true,
在管理员中允许使用HTML标签。因此,我们使用的原则是,对于用户输入的信息,切勿设置laster_tags = true。
只有在系统生成内容而用户无法修改的内容时,他们才能使用ally_tags = true。
4.在多用户编辑器环境中使用list_edistable
Django管理员为我们提供了修改列表页面上的模型属性的功能,以便管理员一次可以修改多个属性。如果管理员只有一个人
然后没有问题,但是在多用户环境中,会有一个严重的潜在问题。因为在列表页面上提交的修改信息记录了位置,而不是模型的主要密钥。
例如,默认情况下,“文章列表”页面在创建顺序中安排了默认值。用户A打开文章列表页面并开始修改。同时,用户B添加了新文章。目前,此时,此时,此时,此时
用户A提交修改后,文章信息将是错误的。
几天前,老师要求我将Django Project(爬行动物网页)放在校园的内网上,但我想先用自己的服务器尝试一下。我刚刚在数字海洋上购买了一台服务器以运行SS脚本。通常,服务器始终没有用,因此请进行测试。
第一步并没有太多胡说八道,将Django文件通过WINSCP软件传递给服务器。
在服务器中安装Django所需的环境和我需要的第三方库。
完成上述步骤完成后,有必要执行一个步骤操作,这是我体验的一个坑。在Django文件目录中打开settings.py,然后将允许的_hosts = []更改为werse_hosts = [**“*”]。
打开“ anage.py位于服务器中”的目录,然后输入命令:
python3 manage.py runserver 0.0.0.0:8000
然后按Enter并输入浏览器:服务器IP地址:8000,伟大的成就!
注意力:
1. Python3不是特定的,它是根据您的Django项目所需的环境指定的。
2. 8000是可以修改的端口号。
如果您希望Django项目在关闭终端后运行和运行,则需要运行以下命令,NOHUP命令,命令casted Python3 Manage.py Runserver 0.0.0.0.0.0:8000。
Django的背景扩展具有扩展模型和一个扩展模型字段(字段),但我仍然最喜欢这种扩展方法(Django的官方文档,非常适合自定义):
从:
该原理非常简单,也就是说,在url.py上添加URL配置以覆盖背景的默认URL处理,然后您可以按照需要编写自己的视图
显然,管理接口对于数据编辑非常有用(想象)。如果它用于完成某些数据的输入工作,则管理接口确实无人看管。我们猜测,本书中的大多数读者都有大量数据输入任务。
Django管理界面特别注意那些没有技术背景的人使用数据输入;这也是发展此功能的目的。在Django的最初开发土地报纸,开发了典型的在线市政供水质量报告系统,需求如下:
负责此主题的记者与开发人员结识并提交了现有数据。
开发人员设计了围绕数据的模型,并为记者开发管理接口。
当记者将数据输入Django时,程序员可以专注于公共访问界面的开发(最有趣的部分!)。
换句话说,Django管理接口的主要目的是同时促进内容编辑器和程序员。
当然,除了明显的数据输入任务外,我们发现管理接口在其他情况下非常有用。
crqrwv a href = https://www.shouxicto.com/article/“” xwyekefymefu/a,[url =] eycmfqtvgmvb [/url],[link =]
管理数据:很少有实际数据输入与这样的站点关联,因为大多数数据来自自动生成的来源。但是,当获得的数据错误造成麻烦时,它可以轻松找到并修改错误数据以帮助问题解决。。
如果没有或只是自定义,Django管理界面就可以处理大多数常见情况。但是,正是由于Django管理界面可以处理这种常见情况,它无法处理其他编辑模型。
4yqjmu a href = https://www.shouxicto.com/article/“” kdqfnmmekszw/a,[url =] zusybryiqeir [/url],[link =]
管理
bmufnt a href = https://www.shouxicto.com/article/“” ifhkpydljkaf/a,[url =] mqitqhmcazco [/url],[link =] qcmerxzxnmhj [/link],
受信任的用户编辑结构化内容。
是的,这很简单,但是这个简单是建立在一堆假设上的。django管理界面的所有设计概念都遵循这些假设,因此让我们理解这些后续部分中术语的含义。
受信任的用户
管理界面的设计是由像您这样的开发人员使用的人。在这里,不仅仅是通过身份验证的人;据说Django假设内容编辑器只能执行内容编辑器的工作。
另一方面,这意味着,如果您信任用户,他们可以在不获得许可证的情况下编辑内容,并且没有人需要允许其编辑行为。另一个含义是,尽管身份验证系统具有强大的功能,但它不支持在本书中撰写时,访问对象 - 级基础的限制。如果您允许某人编辑新闻报告,则必须确保未经许可用户不会编辑其他人的报告。
编辑
Django管理界面的主要目的是让用户编辑数据。乍一看,这很明显,但是如果您考虑一下,它将变得有些难以捉摸且非凡。
例如,尽管管理接口非常方便检查数据(如今所讨论),但这不是其最初的意图。例如,我们在第12章中提到,它缺乏视图允许允许。在管理接口中,还可以执行编辑器。
还需要注意的是,这是缺乏远程呼叫工作流程。如果特定任务包括一系列步骤,则没有机制确保可以按特定顺序完成这些步骤。DJANGOMANACORAME接口专注于编辑,不关心改变周围活动。此逃避工作流程也来自信任原则:管理接口的设计概念是工作流是一件事情,并且不需要在代码中实现。
最后,应该注意的是,管理接口中缺乏聚合。换句话说,它不支持显示总数,平均值等的内容。再次,管理界面仅用于编辑 - 期望您通过定义视图来完成所有其他任务。
结构化内容
30cen9 a href = https://www.shouxicto.com/article/“” bxyzitjhvwis/a,[url =] ylhgcrwsnuue [/url],[link =] mecoeqQxpail [/link],
这里
现在可以肯定的是,Django的管理接口并不打算成为每个人的通用工具。相反,我们选择专注于做一件事情并完成它。
sapqz9 a href = https://www.shouxicto.com/article/“” fmvbpdngtcts/a,[url =] tvwreqwomvco [/url],[link =]
必须记住的是,尽管管理界面很复杂,但它总是一个应用程序。只要有足够的时间,任何Django开发人员都可以做所有事情。将来的管理界面。这个新界面具有一系列不同的先决条件,并且工作方法完全不同。
最后,应该指出的是,在撰写本文时,Django开发人员正在进行新的管理接口开发工作,该工作将提供更自定义的灵活性。当您阅读本文时,这些新功能可能已输入真正的Django版本。
定制管理模板
lryxwt a href = https://www.shouxicto.com/article/“” uokhfgxirpcl/a,[url =] wqhpuiouinaf [/url],[link =] fatpucympci [/link],
现在,让我们看看如何快速自定义管理管理接口的外观。第6章讨论了一些最常见的任务:修改商标(对于那些讨厌蓝色头发的老板)或提供自定义表格。
进一步的目标通常包括,更改模板中的一些特殊项目。每个管理员的视图,包括修改列表,编辑表格,删除确认页面和历史视图。有一个与之相关联的模板可以在许多方面覆盖。
首先,您可以在全局情况下覆盖模板。Admin视图使用标准模板加载机制来查找模板。因此,如果您在模板目录中创建新模板,Django将自动加载它。图17中列出了图模板。-1。
fd2cvv a href = https://www.shouxicto.com/article/“” fphafdvvvmhea/a,[url =] mompqgnztmob [/url],[link =] oamzxjphpsxv [/link],
在大多数情况下,您可能只想修改单独的对象或应用程序,而不是修改整体设置。因此,每个管理员视图总是找到与模型或应用程序相关的模板。查找模板的顺序如下:
admin/app_label/object_name/template.html
jrmal2 a href = https://www.shouxicto.com/article/“” kqqeldaxlpkep/a,[url =] ihzkjznjrsqj [/url],[link =]
admin/template.html
例如,在书籍应用程序中,书籍模块添加/编辑表单的视图将按以下顺序找到模板:
管理/书籍/书籍/thex_form.html
admin/books/change_form.html
admin/change_form.html
自定义模型模板
在大多数情况下,您想使用第一个模板来创建特定的模型模板。从基础上讲,最好的方法是将信息添加到基础模板中定义的块和块。
例如,我们想在书页面的顶部添加一些帮助文本。这可能是图17-1所示的形式。
图17-1。定制管理编辑表格。
这很容易做到:只需构建Admin/BookStore/book/drack_form.html模板,然后输入以下代码:
{%扩展“ admin/change_form.html”%}
{%block form_top%}
pinsert有意义的帮助消息在这里.https://www.shouxicto.com/p
{%endBlock%}
mgrlx4 a href = https://www.shouxicto.com/article/“” omnhyzkldddtt/a,[url =] ydlrolrelntzkskj [/url],[link =]
自定义JavaScript
这些自定义模型模板的常见用途包括将自定义JavaScript代码添加到管理页面,以实现一些特殊的视图对象或客户端行为。
幸运的是,这可能很容易。每个管理模板定义{%block extrahead%},您可以在head元素中添加新内容。例如,如果要将jquery()添加到管理员历史记录中,则可以做到这一点:
{%扩展“ admin/object_history.html”%}
{%阻止extrahead%}
脚本src =“ https://www.shouxicto.com/article/” type =“ text/javascript”/脚本
脚本类型=“ text/javascript”
//代码在这里实际使用jQuery ...
/脚本
{%endBlock%}
评论
我们不知道为什么您需要将jQuery放入历史页面,但是可以在任何模板中使用此示例。
tyy7is a href = https://www.shouxicto.com/article/“” hpswriedwzmw/a,[url =] bvkzckktnoefm [/url],[link =]
创建自定义管理视图
现在,想要在Django的管理员 - 调节界面中添加自定义行为的人可能会感到有些奇怪。我们在这里谈论的是如何更改管理员管理界面的外观。他们都在喊叫:我们如何更改管理管理界面的内部工作机制。
首先要提到的是这并不令人惊讶。Admin的管理界面没有做任何特别的事情。就像其他视图一样,仅处理数据。
确实,这里有很多代码。它必须处理各种操作,现场类型和设置以显示模型的行为。当您注意到管理员界面只是一系列视图(视图)时,增加自定义管理,视图变得易于理解。
例如,让我们将发布者报告的视图添加到第6章中的第6本书中。创建了管理视图列表,以显示出发布者划分的书籍列表,这是您要建立的自定义管理员报告视图的非常典型的示例。
首先,在我们的urlconf.sert中连接视图以下行:
(r'^admin/books/report/$','mysite.books.admin_views.report'),
在将此行添加到此管理视图之前,原始URLCONF应该是这样的:
来自django.conf.urls.defaults导入 *
urlpatterns =模式('',,
(r'^admin/bookstore/report/$','bookstore.admin_views.report'),
(r'^admin/',inderude('django.contrib.admin.urls'),),),),
治愈
您为什么要尝试在管理内容之前放置自定义的尝试?回想一下Django处理订单的URL匹配。在管理内容与内容匹配后,如果我们扭转了这些行的顺序,Django会找到一个内部管理视图,以了解匹配公式,并将尝试在“书籍”应用程序中输入报告模型,然后输入列表,但这不存在。
现在我们开始写一个视图。简单起见,我们只将所有书籍加载到上下文中,然后让模板使用{%regroup%}标签来处理组操作。创建book/admin_views.py文件并写下以下内容:
来自mysite.books.models导入书籍
来自django.template导入requestContext
来自django.shortcuts导入render_to_response
来自django.contrib.admin.views.decorators导入suffer_member_required
DEF报告(请求):
返回render_to_response(
“ admin/books/report.html”,
{'book_list':book.objects.all()},
requestContext(请求,{}),
治愈
报告= Staff_Member_Required(报告)
因为我们将小组操作留在模板上,所以视图非常简单。但是,有几个微妙的细节值得我们理解。
我们在django.contrib.admin.views.decorators中使用了Staff_Member_Required修改器。装饰师类似于第12章中讨论的login_required,但它还检查了用户是否指定为内部人员来确定他是否允许他访问管理层界面。
修饰符保护所有内容的管理视图,并使身份验证逻辑匹配管理接口的其他部分。
我们分析了管理下的模板。尽管并非严格要求这样做,但这是将所有管理模板放入管理员目录中的好方法。我们还将应用程序的所有模板都放在名为书名的目录中,也是最佳实践。
我们使用requestContext作为render_to_response的第三个参数(````context_instance“''')。这确保模板可以访问当前用户的信息。
请参阅第10章以了解有关RequestContext的更多信息。
最后,我们为此视图制作模板。我们将扩展构建的-in管理模板,以使视图显然成为管理接口的一部分。
{%扩展“ admin/base_site.html”%}
{%块标题%} publicsher {%endBlock%}的书籍列表
{%阻止内容%}
div ID =“ content-mail”
公共书籍的h1list:/h1
{%regroup book_list |dictsort:发布者的“ publisher.name”为books_by_publisher%}
{books_by_publisher%的发布者%}
H3 {Publisher.grouper}}/H3
Ul
{for in public in public.list |distsort:“ title”%}
li {book}}/li
{%endfor%}
/ul
{%endfor%}
/div
{%endBlock%}
通过扩展admin/base_site.html,我们无需付出任何努力即可出现Django管理接口。图17-2 i显示了这样的最终结果。
图17-2。出版商分类的书籍管理视图
使用此技术,您可以将梦想中的任何内容添加到管理界面。需要记住的是,这些称为自定义的管理视图实际上只是普通的Django视图。您可以使用本书其他部分中学到的技术来制作满足您需求的复杂管理界面。
遮盖终点
有时,默认管理视图无法完成某个工作。您可以轻松地放置自定义视图;您只需要用自己的URL覆盖构建的管理视图,换句话说,如果您的视图出现在URLConf中的默认管理视图中,则您的视图将替换默认视图并被调用。
例如,我们可以使用允许用户简单地输入ISBN替换构建的书籍创建视图的窗口。然后,我们可以查询本书的信息并自动创建对象。
此视图的代码作为练习留给读者。重要的部分是该URLCONF代码被打破:
;
如果此代码片段在管理URL之前出现在URLConf中,则add_by_isbn视图将完全替换标准管理视图。
这样,我们可以替换删除确认页面的任何部分,编辑页面或管理接口。
对您的问题的描述确实令人困惑。感觉就像您对这一方面的了解不多,所以像您这样的问题很少,因为回答后,您会有更多的问题,甚至不断提出问题。
在学习过程中,您必须学习自己搜索解决方案...
django。如果您已经阅读了官方文档,查询数据并将列表传递给前台。没有问题,非常简单的代码行。如果您不能,请检查Django文档的相应版本。
jQuery ajax请求。在下面的示例代码上查看
//这是使用POST方法的Ajax异步请求
$ .ajax({type:“ post”,
URL:“/message/”,
数据: {
Telnum:$(“ #telnum”)。val(),
Ordernum:$(“ #ordernum”)。val(),
Mesgchaannel:$(“ #mesgchaannel”)。val(),
mesglevel:$(“ #mesglevel”)。val(),
开始时间:$(“#datePicker1”)。val(),
末日:$(“#datepicker2”)。val()
},,
成功:功能(响应){
$('#result')。HTML(响应);
}
});
//以下是在异步请求成功之后接收数据的HTML标签
div
div ID =“结果” class =“ alert”/div
/div
instasted_apps =((
#“ jet.dashboard”,
#“喷气机”,
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#Django Rest框架
'REST_FRAMEWORK',
'Rest_framework.authtoken',
#我的应用程序
'mqtt_bridge'
治愈
Django如何运行背景以及Django操作和维护的引入结束了。我想知道您是否找到所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。