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

django每页多少条目的简单介绍

发布网友 发布时间:2024-10-07 18:00

我来回答

1个回答

热心网友 时间:2024-12-02 16:45

本篇文章给大家谈谈django每页多少条目,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、python怎么搭建django框架2、django的request,response,session的常用方法函数,不用多,帮忙列一下谢谢3、我怎样才能防止数据库条目的并发修改4、在Django models.py,什么是默认值,空值和空白之间的区别5、如何有效的遍历django的QuerySetpython怎么搭建django框架

运行环境

Windows 7(64位) + Python 2.7 + Django 1.7.1

1.安装django框架

当然你首先要有python环境,对于学python的朋友们这个就不多说了~~

我使用的是setuptools工具来安装的,setuptools是python中安装第三方模块常用的安装工具

1.1安装setuptools工具(如果会安装的可以直接跳过)

先从这个地址下载ez_setup.py:

(在页面最下面)

我下载的是setuptools-7.0.zip,将其解压,将解压的setuptools-7.0文件放到一个目录,我这里假定将其放到C:\workspace目录下

打开命令行cmd,在cmd中切换到C:\workspace\setuptools-7.0,即setuptools-7.0安装目录

运行命令:

python ez_setup.py

该命令会安装setuptools工具,安装后打开你的python安装目录下的Scripts目录(我的是C:\Python27\Scripts),会看到easy_install.exe等文件

注意将python安装目录下的Scripts目录(我的是C:\Python27\Scripts)添加到环境变量path,否则下面的easy_install命令会报错

1.2安装django框架

在cmd中输入:

easy_install django

有的安装过程可能会提示缺少vc++包,根据提示网址(我忘了~)下载包,我下载的是VCForPython27.msi,安装vc++后再执行安装

这样就自动安装了django,是不是很方便,哈哈

2.创建django项目,这里假定在c:\workspace\djangoTest下创建(和java有点差别,java是直接创建项目就可以了,python是要先创建项目再在项目里创建app)

进入c:\workspace\djangoTest目录,输入:

django-admin startproject mytodo #网上很多是python django-admin.py startproject mytodo,版本不一样可能命令有细微差别

就创建了mytodo项目

3.启动调试服务器

进入c:\workspace\djangoTest\djangoTest\mytodo目录:

cd mytodo

然后输入:

python manage.py runserver

在浏览器中输入,看能否访问页面

4.创建app

输入命令:python manage.py startapp todo

就在mytodo项目下创建了一个app,即todo

编辑mytodo/settings.py文件,在INSTALLED_APPS添加条目todo

INSTALLED_APPS = (

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.sites',

'todo',

)

即在最后添加一行todo(有的版本是项目名+app名,即mytodo.todo)

再次输入:python manage.py runserver看看你app是否配置好了,养成边写边测试的好习惯,哈哈~

5.配置数据库

django默认的是使用SQLite数据库作为后台数据库,仍然打开mytodo/settings.py,可以看到下面一段:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

这就是django项目的数据库配置,默认是使用SQLite,我们就使用使用默认配置,安装SQLite数据库,不需要修改配置文件

听到又要安装数据库,大家肯定又觉得好复杂,其实在python里安装三方模块,数据库什么的很简单,一条命令就可以搞定了~~

输入命令:

easy_install pysqlite

这样就安装了SQLite数据库

安装完数据库,我们也测试一下,输入命令:

python manage.py syncdb

出现successfully提示就安装成功了,打开mytodo目录,看看里面是否有一个db.sqlite3文件,这就是上面配置的数据库文件

django的request,response,session的常用方法函数,不用多,帮忙列一下谢谢

HttpRequest对象

HttpRequest 表示来自某客户端的一个单独的HTTP请求。

HttpRequest实例的属性包含了关于此次请求的大多数重要信息(详见表H-1)。 除了session外的所有属性都应该认为是只读的.

表 H-1. HttpRequest对象的属性

属性

描述

path表示提交请求页面完整地址的字符串, 不包括域名,如 "/music/bands/the_beatles/" 。

method

表示提交请求使用的HTTP方法。 它总是大写的。例如:

if request.method == 'GET':

do_something()

elif request.method == 'POST':

do_something_else()

GET一个类字典对象,包含所有的HTTP的GET参数的信息。 见 QueryDict 文档。

POST

一个类字典对象,包含所有的HTTP的POST参数的信息。 见 QueryDict 文档。

通过POST提交的请求有可能包含一个空的 POST 字典, 也就是说, 一个通过POST方法提交的表单可能不包含数据。 因此,不应该使用 if request.POST 来判断POST方法的使用, 而是使用if request.method == "POST" (见表中的 method 条目)。

注意: POST 并 不 包含文件上传信息。 见 FILES 。

REQUEST

为了方便而创建,这是一个类字典对象,先搜索 POST , 再搜索 GET 。 灵感来自于PHP的$_REQEUST 。

例如, 若 GET = {"name": "john"} , POST = {"age": '34'} , REQUEST["name"] 会是 "john" ,REQUEST["age"] 会是 "34" 。

强烈建议使用 GET 和 POST ,而不是 REQUEST 。 这是为了向前兼容和更清楚的表示。

COOKIES一个标准的Python字典,包含所有cookie。 键和值都是字符串。cookie使用的更多信息见第12章。

FILES

一个类字典对象,包含所有上传的文件。 FILES 的键来自 input type="file" name="" / 中的name 。 FILES 的值是一个标准的Python字典, 包含以下三个键:

filename :字符串,表示上传文件的文件名。

content-type :上传文件的内容类型。

content :上传文件的原始内容。

注意 FILES 只在请求的方法是 POST ,并且提交的 form 包含 enctype="multipart/form-data" 时 才包含数据。否则, FILES 只是一个空的类字典对象。

META

一个标准的Python字典,包含所有有效的HTTP头信息。 有效的头信息与客户端和服务器有关。 这里有几个例子:

CONTENT_LENGTH

CONTENT_TYPE

QUERY_STRING :未解析的原始请求字符串。

REMOTE_ADDR :客户端IP地址。

REMOTE_HOST :客户端主机名。

SERVER_NAME :服务器主机名。

SERVER_PORT :服务器端口号。

在 META 中有效的任一HTTP头信息都是带有 HTTP_ 前缀的 键,例如:

HTTP_ACCEPT_ENCODING

HTTP_ACCEPT_LANGUAGE

HTTP_HOST :客户端发送的 Host 头信息。

HTTP_REFERER :被指向的页面,如果存在的。

HTTP_USER_AGENT :客户端的user-agent字符串。

HTTP_X_BENDER : X-Bender 头信息的值, 如果已设的话。

user

一个 django.contrib.auth.models.User 对象表示 当前登录用户。 若当前用户尚未登录, user 会设为 django.contrib.auth.models.AnonymousUser 的一个实例。 可以将它们与is_authenticated() 区别开:

if request.user.is_authenticated():

# Do something for logged-in users.

else:

# Do something for anonymous users.

user 仅当Django激活 AuthenticationMiddleware 时有效。

关于认证和用户的完整细节,见第12章。

session一个可读写的类字典对象,表示当前session。 仅当Django已激活session支持时有效。 见第12章。

raw_post_dataPOST的原始数据。 用于对数据的复杂处理。

Request对象同样包含了一些有用的方法,见表H-2。

表 H-2. HttpRequest 的方法

方法

描述

__getitem__(key)

请求所给键的GET/POST值,先查找POST,然后是GET。 若键不存在,则引发异常 KeyError。

该方法使用户可以以访问字典的方式来访问一个 HttpRequest 实例。

例如, request["foo"] 和先检查 request.POST["foo"] 再检查 request.GET["foo"] 一 样。

has_key()返回 True 或 False , 标识 request.GET 或 request.POST 是否包含所给的 键。

get_full_path()返回 path ,若请求字符串有效,则附加于其后。 例如,"/music/bands/the_beatles/?print=true" 。

is_secure()如果请求是安全的,则返回 True 。 也就是说,请求是以HTTPS的形式提交的。

QueryDict 对象

在一个 HttpRequest 对象中, GET 和 POST 属性都是 django.http.QueryDict 的实例。 QueryDict 是一个类似于字典的类,专门用来处理用一个键的多值。当处理一些HTML表单中的元素,特别是 select multiple="multiple" 之类传递同一key的多值的元素时,就需要这个类了。

translating....

QueryDict 实例是不可变的,除非创建了一个 copy() 副本。也就是说不能直接更改 request.POST 和 request.GET 的属性。

QueryDict 实现了所有标准的字典的方法,因为它正是字典的一个子类。与其不同的东西都已在表H-3中列出。

表 H-3. QueryDicts 与标准字典的区别

方法

与标准字典实现的不同

__getitem__与一个字典一样。但是,当一个键有多个值时, __getitem__() 返回最后一个值。

__setitem__将所给键的值设为 [value] (一个只有一个 value 元素的 Python列表)。 注意,因对其它的字典函数有副作用,故它只能被称 为一个可变的 QueryDict (通过 copy() 创建)。

get()如果一个键多个值,和 __getitem__ 一样, get() 返回 最后一个值。

update()

参数是一个 QueryDict 或标准字典。 和标准字典的

update 不同,这个方法*增加*而不是替换一项内容:

q = QueryDict('a=1')

q = q.copy() # 使其可变

q.update({'a': '2'})

q.getlist('a')

['1', '2']

q['a'] # 返回最后一个值

['2']

items()

和标准字典的 items() 方法一样, 不同的是它和 __getitem()__ 一样,返回最后一个值:

q = QueryDict('a=1a=2a=3')

q.items()

[('a', '3')]

values()和标准字典的 values() 方法一样, 不同的是它和 __getitem()__ 一样,返回最后一个值。

另外, QueryDict 还有在表H-4中列出的方法。

表 H-4. 附加的 (非字典的) QueryDict 方法

方法

描述

copy()返回一个对象的副本,使用的是Python标准库中的 copy.deepcopy() 。 该副本是可变的, 也就是说,你能改变它的值。

getlist(key)以Python列表的形式返回所请求键的数据。 若键不存在则返回空列表。 它保证了一定会返回某种形式的list。

setlist(key, list_)将所给键的键值设为 list_ (与 __setitem__() 不同)。

appendlist(key, item)在 key 相关的list上增加 item 。

setlistdefault(key, l)和 setdefault 一样, 不同的是它的第二个参数是 一个列表,而不是一个值。

lists()

和 items() 一样, 不同的是它以一个列表的形式 返回字典每一个成员的所有值。 例如:

q = QueryDict('a=1a=2a=3')

q.lists()

[('a', ['1', '2', '3'])]

urlencode()返回一个请求字符串格式的数据字符串 (如, "a=2b=3b=5" )。

一个完整的例子

例如, 给定这个HTML表单:

form action="/foo/bar/" method="post"

input type="text" name="your_name" /

select multiple="multiple" name="bands"

option value="beatles"The Beatles/option

option value="who"The Who/option

option value="zombies"The Zombies/option

/select

input type="submit" /

/form

如果用户在 your_name 中输入 "John Smith" ,并且在多选框中同时选择了The Beatles和The Zombies,那么以下就是Django的request对象所拥有的:

request.GET

{}

request.POST

{'your_name': ['John Smith'], 'bands': ['beatles', 'zombies']}

request.POST['your_name']

'John Smith'

request.POST['bands']

'zombies'

request.POST.getlist('bands')

['beatles', 'zombies']

request.POST.get('your_name', 'Adrian')

'John Smith'

request.POST.get('nonexistent_field', 'Nowhere Man')

'Nowhere Man'

使用时请注意:

GET , POST , COOKIES , FILES , META , REQUEST , raw_post_data 和 user 这些属性都是延迟加载的。 也就是说除非代码中访问它们,否则Django并不会花费资源来计算这些属性值。

我怎样才能防止数据库条目的并发修改

1. 事实上,交易不帮你在这里多...除非你想有运行在多个HTTP请求(你很可能不希望)的交易。 有什么用在这些情况下是“乐观锁定”。 Django的ORM不支持,据我所知。但一直以来关于添加此功能。 那么,你是你自己的。基本上,你应该做的就是添加一个“版本”字段,你的模型,并把它传递给一个隐藏字段。正常周期的更新是: 读取数据并显示给 用户可以修改数据 用户发布的数据 该应用程序将其保存回数据库。 乐观锁,当你保存数据,你检查,如果你得到了从后面的版本是作为一个在数据库中,然后更新数据库和版本。如果它们不是,那有一直以来被加载的数据的变化。 你可以做到这一点与像一个单一的SQL调用:UPDATE ... WHERE version = 'version_from_user';

这个调用将更新数据库只有在版本仍然是

2. 我就是这样做的Django的乐观锁:updated = Entry.objects.filter(Q(id=e.id)Q(version=e.version))\

.update(updated_field=new_value, version=e.version+1)

if not updated:

raise ConcurrentModificationException()

上面列出的代码可以在自定义管理。 我提出以下假设: 筛选()。update()方法会导致在一个单一的数据库查询过滤器是懒惰 数据库查询是原子 这些假设都足以确保没有其他人之前已经更新了条目。如果有多个行被更新这样你的交易。 警告Django的文件: 请注意,update()方法是 直接转换为SQL 这是一个批量操作 直接更新。它不运行任何 保存(您的模型)的方法,或发出 该pre_save或post_save信号

3. 这个问题是有点老了,我的回答有点晚,但经过我的理解使用这个已被固定在Django 1.4:select_for_update(nowait=True)

看到文档 返回一个QuerySet,将锁定行,直到事务结束,产生一个SELECT ...有关支持的数据库UPDATE的SQL。 通常情况下,如果另一个事务已获得所选择的行上的锁,则查询将阻塞,直到锁被释放。如果这不是你想要的行为,请致电select_for_update(NOWAIT=TRUE)。这将使调用非阻塞的。如果已经获取了冲突的锁被另一个事务时的QuerySet进行评估,DatabaseError的将得到提升。 当然,这只会工作,如果后端支持的“选择更新”功能,这对于例如SQLite不。不幸的是:nowait=True不支持MySql的,有你有nowait=False,这只会阻塞,直到锁被释放。

4. 对于未来的参考,退房离开的时候(在浏览器中,例如崩溃)的页面,并锁定它锁定的方式,不留下永恒的锁,通过javascript的解锁的混合物。下

5. 你应该Django的交易中间件,至少,甚至不管这个问题。 至于你实际有编辑数据的问题...是的,使用锁。或: 检查什么版本正在更新对(这样做牢固,不能简单地破解系统说,他们正在更新的最新副本!),且仅当该版本是最新的更新。否则,返回一个新页面与原来的版本,他们编辑,他们提交的版本,和别人写的新版本(S)。问他们变成一体,完全取决于最新的版本。你可以尝试类似的diff +补丁工具集,但你需要有方法工作失败的案例,无论如何,所以开始了。此外,您将需要保存的版本历史记录,并允许管理员恢复的变化,在无意的情况下或向上,但你应该有反正。 有很可能是Django应用程序/库,做这个最适合你。

6. 为了安全起见,数据库需要支持事务。 如果字段是“自由形式”如文字等等,你需要允许可以编辑的字段(你不能有所有权的数据),你可以存储在变量中的原始数据。 当committs,检查输入数据从原始数据更改(如果不是,你不需要通过重写旧数据打扰DB) 如

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我要问一下掇刀医保局恢复正常上班吗? 医保卡是东宝区的怎么才能转到掇刀区 东宝人社局 医保局 空调扇和风扇有什么区别 ...上了技校,现在上了电大的大专,档案在自己手里怎么办? 高职扩招的档案从哪里来 专科没有毕业档案怎么办 技校没上完考上专科,档案怎么转 凉薯和红薯有什么区别 凉薯和山药一样吗 我是一名教师 评职称发表论文 不知道网上哪些机构好点 具体? django怎么设置session(2023年最新分享) 刘涛主演的《陪你一起长大》开播,她在这部剧里出演了一个怎样的... 《陪你一起长大》的女性角色生动诠释外柔内刚,你喜欢哪个女性角色? 《陪你一起长大》结局是什么 《陪你一起长大》什么时候更新 ...但不能重新开始 无论删除重装 还是用另外苹果ID装 都是原来的进度... 我在ipad上下的游戏玩了之后要重新开始怎么半,清除游戏当中的数据但... 问下wow的坐骑,我是部落,除了各主城的坐骑,还有没有什么比较好弄... ...声望刷的塔布羊,绿色始祖幼龙,FB掉落的,什么的,都说下,越详细越好... 关于AQL虫子坐骑!!! 为什么晚上睡不着一个人看b站 为什么半夜会睡不着看B站? 为什么有人晚上睡不着看B站直播? 为什么晚上睡不着觉看B站 为什么我看B站的时候更容易睡不着了呢? 为什么我在B站看视频,会睡不着? 为什么有的人会晚上睡不着偷偷看B站大全? 华为平板下游戏下好了怎么又要重下? 双鱼座是几月到几号,白羊座几月几号到几月几号 白羊座是几号 哪些品牌的牛肉罐头值得安利? 四川有哪些特色旅游 WOW铭文怎么做法杖?我的法师买了个1/6的法杖,怎么用铭文升级到6/6 wow…4/4的晶火法杖可以改变次要属性么??用什么改?? he may indulge himself in online games 请问这句话语法对不对,特别是... 电脑开机后一直黑屏怎么处理? 图标左下角有的带小箭头有的不带,介绍一下,谢谢 有的带箭头和没有带箭头的左转等待区是一样吗?有说没有带箭头是导流线... ...身故了怎么赔偿?如果有指定的重大疾病怎么赔偿? 黄体囊肿需要注意什么 安全出口标志上的小绿人其实也有名字,你知道叫什么吗_6月18日每日一题... 卵巢黄体囊肿怎么回事 安全标志上的小绿人叫什么名字 安全出口小人的名字叫什么 安全出口标志的尺 在iPad上下的软件,删除后,连到电脑上怎么还在下载 ...在itunes里把下载过的不用的软件删除,ipad里已经把应用软件删除了... 怎么才可以把下载到电脑上itunes的游戏和ipad上面同步,但是不会把ip... ipad上已经删除的东西itunes上还有显示怎么删除 月息3厘一万元一个月要多少息 粉蒸肉如何保存