victory的博客

长安一片月,万户捣衣声

0%

django自定义错误页面

在进行django项目开发时,如果用户请求一个不存在的页面,将会显示以下界面:

我们可以自定义一个错误页面来展示提示信息。

django版本:1.8.2

步骤:
1.修改settings.py

DEBUG = False
ALLOWED_HOSTS = ['*']

2.在templates文件夹下创建404.html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
找不到了
<hr/>
{{ request_path }}
</body>
</html>

3.运行服务器,访问一个不存在的页面,将显示自定义的错误页面

Django模型查询

查询集的两个特性:

1.惰性执行
创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库
2.缓存
case1:构成了两个查询集,无法重用缓存,每次查询都会与数据库进行一次交互

print([e.attr for e in Entry.objects.all()])
print([e.attr for e in Entry.objects.all()])

case2:两次循环使用同一个查询集,第二次使用缓存中的数据

querylist=ExampleModel.objects.all()
print([e.attr for e in querylist])
print([e.attr for e in querylist])

case3:何时查询集不会被缓存
对整个查询集的子集进行求值时不会缓存

query=ExampleModel.objects.all()
for ... in query[0:10]
for ... in query[11:20]

字段查询

实现where子名,作为方法filter()、exclude()、get()的参数
语法:属性名称__比较运算符=值
举例:查询模型类中属性attr1包含1的对象
query_list = ExampleModel.objects.filter(attr1__contains=’1’)

比较运算符:
exact、contains、startswith、endswith、isnull、isnotnull、gt、gte、lt、lte、year、
month、day、week_day、hour、minute、second
注:跨关联查询(语法:模型类名__属性名__比较运算符)

聚合函数:
aggregate(Avg()/Count/Max/Min/Sum)

F对象和Q对象

1.通过构造F对象来比较模型中的两个列
举例:query_list = ExampleModel.objects.filter(attr1=F(‘attr2’))
2.通过构造Q对象来实现or查询
举例:query_list = ExampleModel.objects.filter(Q(pk__lt=6) | Q(attr__gt=1))

Django中使用MySQL数据库

1.在虚拟环境中安装mysql包

pip install mysql-python

2.在mysql中创建数据库

create databases database_name charset=utf8

3.在settings.py中修改DATABASES项

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database_name',
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

4.开发流程
1)在models.py中定义模型类(继承models.Model)

class Example(models.Model):
    field1 = 
    field2 = 
    ...

2)把应用加入settings.py文件的installed_app项

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app_name',
)

3)生成迁移文件

python manage.py makemigrations

4)执行迁移生成表

python manage.py migrate

5)使用模型类进行crud操作

注:
使用数据库生成模型类
python manage.py inspectdb > app_name/models.py

活法

读了稻盛和夫的活法,书中的每一字每一句都可以作为人生哲学和信条,下面记录了自己应该首先去学习、去执行的一些人生哲学:

阅读全文 »

awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。
python资源大全中文版