django2.0,实现搜索数据库数据并显示在网页的功能

django2.0,实现搜索数据库数据并显示在网页的功能,第1张

我没环境,不方便帮你写代码,但可以告诉你思路:

你想用ajax方式查数据,第一步,你已经获取到了输入表单的的值,这很好。

第二步,你需要添加一个查询接口路由,和view,用来返回查询到后数据。

第三步,让前端js代码,用ajax的方式,请求你添加的查询路由地址,带上参数。

第四步,在路由对应的view代码中,获取通过url请求传过来的参数。

第五步,在view代码中,对参数进行检查,通过后,调用数据查询方法,获取结果集。

第六步,在view代码中,将结果集转为json(一般是json),返回。

第七步,ajax在收到返回结果后,将数据显示在网页中。

第八步,调整数据显示的样式,使之美观一点。

如有不明可以追问,或私信留言。

做运维,最近学习了django,从1版本到20再到现在这个22版本,中间功能变化不少,坑啊

建议初学者还是直接学新点的,现在已经出3版本了。。。。

settingspy配置文件变动部分如下

urlpy配置(这个正文少,就都贴出来)

由于创建连接的代价是很高的, 我们每次访问数据库都重新创建连接的话是非常消耗性的

我们可以再程序启动的时候先创建出一些连接, 放在一个集合中, 访问数据库的时候从集合中获取, 使用结束再放回集合中

这样做只是在程序启动的时候消耗性能去创建连接, 每次访问数据库的时候都是从内存中获取连接, 可以大大提升效率

注意事项:

由于池中增删非常频繁, 使用集合LinkedList效率较高

集合中所有连接都被占用时创建新连接, 但需要注意连接总数

使用组合模式/动态代理处理释放连接的方法, 当运行close方法时, 将连接放回池中

关于数据库连接池:

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库 *** 作的性能。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被 使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超 过最大连接数量时,这些请求将被加入到等待队列中。

有时候,我们需要Templates模板页面可以使用一些变量。这些变量我们在viewspy响应时没有返回设置的变量。例如,如下代码:

#coding:utf-8

from djangoshortcuts import render

def index(request):

context = {}

context['title'] = '测试标题'

return render(request, 'indexhtml', context)

上面是某个viewspy的方法之一。它将渲染indexhtml模版(Template)页面,并返回context字典。该字典是传入变量信息给前端页面。对应的indexhtml如下:

 

<html>

<head></head>

<body>

<h3>{{title}}</h3>

<p>是否登录:{{requestuseris_authenticated}}</p>

</body>

</html>

响应结果除了有title变量值之外,还有是否登录信息。该登录信息来自request变量,问题是上面viewspy中返回结果的context中没有写入request变量。而模版也没却有可以获取该变量。

这个当时不是无中生有,我一步一步剖析给大家看。原理讲明白之后,就自然懂得如何设置模版(Templates)的全局变量或者叫默认变量。

render方法是render_to_response方法的简写方式。上面的viewspy代码相当于如下:

 

#coding:utf-8

from djangoshortcuts import render_to_response

from djangotemplate import RequestContext

def index(request):

context = {}

context['title'] = '测试标题'

return render_to_response('indexhtml', context, RequestContext(request))

如果去掉render_to_response的第三个参数,即RequestContext(request)部分。

渲染indexhtml模版页面就无法得到{{requestuseris_authenticated}}的值,即没有传递request变量给前端页面。很明显RequestContext很关键。

有关RequestContext的内容可以从Django官方文档查得。

该类实例化时会解析settings中的Templates设置中的context_processors配置。新建Django项目settingspy文件中默认的Templates设置如下:

 

TEMPLATES = [

{

'BACKEND': 'djangotemplatebackendsdjangoDjangoTemplates',

'DIRS': [],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'djangotemplatecontext_processorsdebug',

'djangotemplatecontext_processorsrequest',

'djangocontribauthcontext_processorsauth',

'djangocontribmessagescontext_processorsmessages',

],

},

},

]

大家可发现context_processors有一系列设置,其中根据djangotemplatecontext_processorsrequest的路径找到Django的相关源码。

Django安装在Python的安装目录下Lib/site-packages/目录中,找到django/template/context_processorspy文件,打开可看到request方法:

 

def request(request):

return {'request': request}

该方法返回一个字典,key为request,value为request对象。很明显,render中的request对象就是通过加载settings中的context_processors列表方法得到字典项。

我们也可以采用这种方法,给Django项目设置全局的模版变量。例如,我的Django名称为myproject,在myproject/myproject目录中创建一个contextspy文件,代码如下:

 

#coding:utf-8

from djangoconf import settings

# 得到语言设置

def lang(request):

return {'lang': settingsLANGUAGE_CODE}

该文件的方法需要request参数,最后需要返回一个字典即可。

再打开settingspy文件,在Templates中添加刚才写的方法引用:

 

TEMPLATES = [

{

'BACKEND': 'djangotemplatebackendsdjangoDjangoTemplates',

'DIRS': [],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'djangotemplatecontext_processorsdebug',

'djangotemplatecontext_processorsrequest',

'djangocontribauthcontext_processorsauth',

'djangocontribmessagescontext_processorsmessages',

# 自定义模版全局变量(默认变量)

'myprojectcontextslang',

],

},

},

]

添加模版全局变量之后,我们可以在任意位置渲染模版页面无需再手动写相关代码即可使用该变量。

推荐用新版本的Django进行开发,可以肯定的是 Django 14 以后的版本应该都支持下面的设置

注意:Django 14 版本需要在 project/urlspy 底部加上:

from djangocontribstaticfilesurls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()

Django 15 - Django 18 不需要添加上面的代码。

settingspy 静态文件相关示例代码及说明:

# Static files (CSS, JavaScript, Images)

STATIC_URL = '/static/' # 当运行 python managepy collectstatic 的时候# STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来# 把这些文件放到一起是为了用apache等部署的时候更方便STATIC_ROOT = ospathjoin(BASE_DIR, 'collected_static') # 其它 存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT# 如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以STATICFILES_DIRS = ( ospathjoin(BASE_DIR, "common_static"), '/path/to/others/static/', # 用不到的时候可以不写这一行) # 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件# 注意有先后顺序,找到了就不再继续找了STATICFILES_FINDERS = ( "djangocontribstaticfilesfindersFileSystemFinder", "djangocontribstaticfilesfindersAppDirectoriesFinder")

静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中。

当 DEBUG = True 时,Django 就能自动找到放在里面的静态文件。(Django 通过 STATICFILES_FINDERS 中的“查找器”,找到符合的就停下来,寻找的过程 类似于 Python 中使用 import xxx 时,找 xxx 这个包的过程)。

示例项目 dj18static, 应用 app 下面有一个 static 里面有一个 zqxtpng :

dj18static├── blog│ ├── __init__py│ ├── adminpy│ ├── migrations│ │ └── __init__py│ ├── modelspy│ ├── static # 应用 blog 下的 static, 默认会找这个文件夹│ │ └── zqxtpng│ ├── testspy│ ││ └── viewspy├── common_static # 已经添加到了 STATICFILES_DIRS 的文件夹│ └── js│ └── jqueryjs│├── dj18static│ ├── __init__py│ ├── settingspy│ ├── urlspy│ └── wsgipy└── managepy

当 settingspy 中的 DEBUG = True 时,打开开发服务器 python managepy runserver 直接访问 /static/zqxtpng 就可以找到这个静态文件。

也可以在 settingspy 中指定所有 app 共用的静态文件,比如 jqueryjs 等

STATICFILES_DIRS = ( ospathjoin(BASE_DIR, "common_static"),)

把 jqueryjs 放在 common_static/js/ 下,这样就可以 在 /static/js/jqueryjs 中访问到它!

首先你要有一个Centos系统,一般情况系统会自带Python的。如果没有安装,可以用yum install python 解决。

Django安装大致有pip、git、源码包三种方式安装。下面主要介绍pip方式,也是最常用的方式之一!

PS:Django支持在很多平台上面构建,例如Ubuntu,Windows等。

Pip安装:

wget >

以上就是关于django2.0,实现搜索数据库数据并显示在网页的功能全部的内容,包括:django2.0,实现搜索数据库数据并显示在网页的功能、django2.2学习示例—订单系统1——基本结构及项目目录文件、Django用户配置文件数据库的问题问题,怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9813090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存