新書推薦:
《
拯救免疫失衡
》
售價:NT$
254.0
《
收尸人
》
售價:NT$
332.0
《
大模型应用开发:RAG入门与实战
》
售價:NT$
407.0
《
不挨饿快速瘦的减脂餐
》
售價:NT$
305.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:NT$
504.0
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:NT$
602.0
《
化妆品学原理
》
售價:NT$
254.0
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:NT$
214.0
|
編輯推薦: |
一线程序员撰写,凝聚自己多年开发经验,深入浅出阐释Django开发涉及的方法和实践
|
內容簡介: |
本书是一线程序员多年开发经验的结晶。书中深入浅出地讲解了使用Django开发Web网站所需的配置、后台、路由系统、模型、视图、模板、表单系统、中间件、自动化测试、国际化及本地化、安全和部署等内容,帮助读者快速进入Web项目开发,在项目实践中灵活应用各种开发技术和方法。 本书主要包含四部分:*部分(第1章)为读者介绍Django的发展状况以及如何搭建Django开发环境;第二部分(第2章)主要介绍什么是Web开发框架并通过搭建一个简单的Web框架帮助读者理解Web框架的工作原理;第三部分(第3章)带领读者搭建一个网站,使读者能够从整体上了解Django;第四部分(第4~16章)详细介绍Django各个模块的工作原理,通过学习这部分内容,读者将能够独立开发Django应用。 本书可供Web开发初中级读者以及希望使用Python作为编程语言的软件开发工程师参考。
|
關於作者: |
李健,高级自动化开发工程师,持续集成开发工程师,拥有多年软件开发经验,以及丰富的Web开发经验,擅长ASP.NET相关技术。熟练掌握Python和Django框架,Jenkins以及持续集成。目前重点关注Python语言、数据挖掘等领域。
|
目錄:
|
第1章 走进Django的世界 1
1.1 认识Django 1
1.2 版本选择 1
1.3 搭建开发环境 2
1.3.1 安装Python 2
1.3.2 安装Django 2
第2章 Web开发框架 4
2.1 Socket编程 4
2.2 MTV框架 6
第3章 搭建第一个Django网站 8
3.1 创建项目 8
3.2 运行项目 9
3.3 创建投票应用 10
3.4 开发第一个视图 11
3.5 配置数据库 12
3.6 创建模型 13
3.7 激活模型 14
3.8 Django管理页面 15
3.9 向管理页面中添加投票应用 16
3.10 添加视图 18
3.10.1 扩展视图 19
3.10.2 处理404错误 21
3.11 使用模板系统 22
3.11.1 模板中的超链接 23
3.11.2 为超链接添加命名空间 23
3.12 HTML表单 24
3.13 添加样式 27
3.14 本地化 28
3.15 小结 29
第4章 django-admin和manage.py 30
4.1 help 31
4.2 version32
4.3 check 32
4.4 compilemessages 32
4.5 createcachetable 34
4.6 dbshell 34
4.7 diffsettings 35
4.8 dumpdata35
4.9 flush36
4.10 inspectdb 36
4.11 loaddata 38
4.12 makemessages 38
4.13 startproject 39
4.14 startapp 39
4.15 runserver40
4.16 sendtestemail40
4.17 shell 41
4.18 迁移 41
4.18.1 makemigrations 41
4.18.2 migrate 42
4.18.3 sqlmigrate 43
4.18.4 showmigrations 43
4.19 changepassword 44
4.20 createsuperuser 44
4.21 collectstatic44
4.22 findstatic 45
4.23 默认选项 45
第5章 配置 46
5.1 Django配置文件 46
5.1.1 引用Django配置信息 47
5.1.2 django.setup 47
5.2 Cache 48
5.2.1 CACHES 48
5.2.2 CACHE_MIDDLEWARE_ALIAS: 49
5.2.3 CACHE_MIDDLEWARE_KEY_PREFIX: 49
5.2.4 CACHE_MIDDLEWARE_SECONDS: 49
5.3 数据库 50
5.3.1 DATABASES 50
5.3.2 DATABASE_ROUTERS 54
5.3.3 DEFAULT_INDEX_TABLESPACE57
5.3.4 DEFAULT_TABLESPACE 57
5.4 调试 57
5.4.1 DEBUG 57
5.4.2 DEBUG_PROPAGATE_EXCEPTIONS 58
5.5 电子邮件 58
5.5.1 ADMINS 58
5.5.2 DEFAULT_FROM_EMAIL 59
5.5.3 EMAIL_BACKEND 59
5.5.4 EMAIL_HOST 59
5.5.5 EMAIL_HOST_USER 59
5.5.6 EMAIL_HOST_PASSWORD 59
5.5.7 EMAIL_PORT 59
5.5.8 EMAIL_TIMEOUT 59
5.5.9 SERVER_EMAIL 59
5.5.10 MANAGERS 60
5.6 文件上传 60
5.6.1 DEFAULT_FILE_STORAGE 60
5.6.2 FILE_CHARSET 60
5.6.3 FILE_UPLOAD_HANDLERS 60
5.6.4 FILE_UPLOAD_MAX_MEMORY_SIZE 60
5.6.5 FILE_UPLOAD_PERMISSIONS60
5.6.6 FILE_UPLOAD_DIRECTORY_PERMISSIONS 60
5.6.7 FILE_UPLOAD_TEMP_DIR 61
5.6.8 MEDIA_ROOT 61
5.6.9 MEDIA_URL 61
5.6.10 静态文件 62
5.7 表单 63
5.8 国际化(i18nl10n) 63
5.8.1 DECIMAL_SEPARATOR63
5.8.2 NUMBER_GROUPING 63
5.8.3 THOUSAND_SEPARATOR 65
5.8.4 USE_THOUSAND_SEPARATOR 66
5.8.5 FIRST_DAY_OF_WEEK 66
5.8.6 DATE_FORMAT 66
5.8.7 DATE_INPUT_FORMATS 66
5.8.8 DATETIME_FORMAT 67
5.8.9 SHORT_DATE_FORMAT 67
5.8.10 SHORT_DATETIME_FORMAT 67
5.8.11 DATETIME_INPUT_FORMATS 67
5.8.12 TIME_FORMAT 68
5.8.13 TIME_INPUT_FORMATS 68
5.8.14 YEAR_MONTH_FORMAT 68
5.8.15 MONTH_DAY_FORMAT 68
5.8.16 TIME_ZONE 69
5.8.17 LANGUAGE_CODE 69
5.8.18 LANGUAGE_COOKIE_AGE 69
5.8.19 LANGUAGE_COOKIE_DOMAIN 69
5.8.20 LANGUAGE_COOKIE_NAME 70
5.8.21 LANGUAGE_COOKIE_PATH 70
5.8.22 LANGUAGES 70
5.8.23 LANGUAGES_BIDI70
5.8.24 LOCALE_PATHS 70
5.8.25 USE_I18N 70
5.8.26 USE_L10N 71
5.8.27 USE_TZ 71
5.8.28 Python datetime语法 71
5.9 HTTP 71
5.9.1 DATA_UPLOAD_MAX_MEMORY_SIZE 71
5.9.2 DATA_UPLOAD_MAX_NUMBER_FIELDS 72
5.9.3 DEFAULT_CHARSET 72
5.9.4 DISALLOWED_USER_AGENTS 72
5.9.5 FORCE_SCRIPT_NAME 72
5.9.6 INTERNAL_IPS 72
5.9.7 SECURE_BROWSER_XSS_FILTER 73
5.9.8 SECURE_CONTENT_TYPE_NOSNIFF73
5.9.9 SECURE_HSTS_INCLUDE_SUBDOMAINS 73
5.9.10 SECURE_HSTS_PRELOAD 73
5.9.11 SECURE_HSTS_SECONDS 73
5.9.12 SECURE_PROXY_SSL_HEADER 74
5.9.13 SECURE_REDIRECT_EXEMPT 74
5.9.14 SECURE_REFERRER_POLICY 75
5.9.15 SECURE_SSL_HOST 75
5.9.16 SECURE_SSL_REDIRECT 75
5.9.17 SIGNING_BACKEND 75
5.9.18 WSGI_APPLICATION 75
5.10 安全 75
5.10.1 SECRET_KEY 75
5.10.2 ALLOWED_HOSTS 76
5.11 CSRF 76
5.11.1 CSRF_COOKIE_AGE 76
5.11.2 CSRF_COOKIE_DOMAIN 77
5.11.3 CSRF_COOKIE_HTTPONLY 77
5.11.4 CSRF_COOKIE_NAME 77
5.11.5 CSRF_COOKIE_PATH 77
5.11.6 CSRF_COOKIE_SAMESITE 77
5.11.7 CSRF_COOKIE_SECURE 77
5.11.8 CSRF_USE_SESSIONS 78
5.11.9 CSRF_FAILURE_VIEW 78
5.11.10 CSRF_HEADER_NAME 78
5.11.11 CSRF_TRUSTED_ORIGINS 78
5.11.12 代码示例 78
5.12 模型 81
5.12.1 ABSOLUTE_URL_OVERRIDES 81
5.12.2 FIXTURE_DIRS 81
5.12.3 INSTALLED_APPS 81
5.13 日志 81
5.13.1 LOGGING 81
5.13.2 LOGGING_CONFIG 82
5.14 模板 82
5.15 URLs 83
5.15.1 ROOT_URLCONF 83
5.15.2 APPEND_SLASH 83
5.15.3 PREPEND_WWW 84
5.16 其他 84
5.16.1 DEFAULT_EXCEPTION_REPORTER_FILTER 84
5.16.2 MIDDLEWARE 84
第6章 后台管理页面 85
6.1 ModelAdmin属性 85
6.1.1 date_hierarchy 86
6.1.2 actions_on_topactions_on_bottom 88
6.1.3 actions_selection_counter 88
6.1.4 empty_value_display 89
6.1.5 exclude 90
6.1.6 fi elds91
6.1.7 fi eldsets 92
6.1.8 fi lter_horizontal 94
6.1.9 fi lter_vertical 95
6.1.10 form 96
6.1.11 formfi eld_overrides 96
6.1.12 inlines97
6.1.13 list_display 97
6.1.14 list_display_links 100
6.1.15 list_editable 101
6.1.16 list_fi lter 102
6.1.17 list_per_page 102
6.1.18 list_max_show_all 103
6.1.19 list_select_related 103
6.1.20 ordering 104
6.1.21 paginator 104
6.1.22 prepopulated_fi elds 104
6.1.23 preserve_fi lters104
6.1.24 radio_fi elds 105
6.1.25 autocomplete_fi elds 105
6.1.26 raw_id_fi elds 106
6.1.27 readonly_fi elds107
6.1.28 save_as 107
6.1.29 save_as_continue 107
6.1.30 save_on_top 108
6.1.31 search_fi elds 108
6.1.32 show_full_result_count 110
6.1.33 sortable_by110
6.1.34 view_on_site 110
6.1.35 自定义模板 111
6.2 ModelAdmin 方法 112
6.2.1 save_model 112
6.2.2 delete_model 113
6.2.3 delete_queryset 113
6.2.4 save_formset 113
6.2.5 get_ordering 114
6.2.6 get_search_results 114
6.2.7 save_related 114
6.2.8 get_autocomplete_fi elds 115
6.2.9 get_readonly_fi elds 115
6.2.10 get_prepopulated_fi elds 115
6.2.11 get_list_display 115
6.2.12 get_list_display_links 115
6.2.13 get_exclude 115
6.2.14 get_fi elds 115
6.2.15 get_fi eldsets 115
6.2.16 get_list_fi lter 115
6.2.17 get_list_select_related 116
6.2.18 get_search_fi elds 116
6.2.19 get_sortable_by 116
6.2.20 get_inline_instances116
6.2.21 get_inlines 116
6.2.22 get_urls 116
6.2.23 get_form117
6.2.24 get_formsets_with_inlines 117
6.2.25 formfi eld_for_foreignKey 118
6.2.26 formfi eld_for_manytomany 118
6.2.27 formfi eld_for_choice_fi eld 118
6.2.28 get_changelist 119
6.2.29 get_changelist_form 119
6.2.30 get_changelist_formset 119
6.2.31 lookup_allowed 119
6.2.32 has_view_permission120
6.2.33 has_add_permission120
6.2.34 has_change_permission 120
6.2.35 has_delete_permission 120
6.2.36 has_module_permission 120
6.2.37 get_queryset 120
6.2.38 message_user 121
6.2.39 get_paginator 121
6.2.40 response_add 121
6.2.41 response_change 121
6.2.42 response_delete 121
6.2.43 get_changeform_initial_data 122
6.2.44 get_deleted_objects 122
6.2.45 add_view 123
6.2.46 change_view 123
6.2.47 changelist_view 123
6.2.48 delete_view 123
6.2.49 history_view 123
6.3 ModelAdmin资源 123
6.4 定制验证功能 124
6.5 InlineModelAdmin 124
6.5.1 InlineModelAdmin.model 125
6.5.2 InlineModelAdmin.fk_name 125
6.5.3 InlineModelAdmin.formset 125
6.5.4 InlineModelAdmin.form125
6.5.5 InlineModelAdmin.classes 125
6.5.6 InlineModelAdmin.extra 125
6.5.7 InlineModelAdmin.max_num 126
6.5.8 InlineModelAdmin.min_num 126
6.5.9 InlineModelAdmin.raw_id_fi elds127
6.5.10 InlineModelAdmin.template128
6.5.11 InlineModelAdmin.verbose_name 128
6.5.12 InlineModelAdmin.verbose_name_plural 128
6.5.13 InlineModelAdmin.can_delete 128
6.5.14 InlineModelAdmin.show_change_link 129
6.5.15 InlineModelAdmin.get_formsetrequest, obj=None, **kwargs 129
6.5.16 InlineModelAdmin.get_extrarequest,obj=None, **kwargs 129
6.5.17 InlineModelAdmin.get_max_numrequest, obj=None, **kwargs 129
6.5.18 InlineModelAdmin.get_min_numrequest, obj=None, **kwargs 130
6.5.19 InlineModelAdmin.has_add_permissionrequest, obj 130
6.5.20 InlineModelAdmin.has_change_permissionrequest, obj=None 130
6.5.21 InlineModelAdmin.has_delete_permissionrequest, obj=None 130
6.5.22 使用中间模型处理 ManyToMany关系 130
6.6 重写管理后台模板 131
6.6.1 新建管理后台模板 131
6.6.2 重写与替换 133
6.6.3 可重写模板 134
6.6.4 根模板和登录模板 134
6.7 AdminSite 134
6.7.1 重写AdminSite 134
6.7.2 多管理后台的实现 136
第7章 路由系统 137
7.1 Django处理HTTP请求的流程 137
7.2 URLconf示例 137
7.3 URL参数类型转化器 138
7.4 自定义URL参数类型转化器 138
7.5 使用正则表达式 140
7.6 导入其他URLconf 140
7.7 向视图传递额外参数 141
7.8 动态生成URL 142
7.9 URL名字和命名空间 143
第8章 模型 145
8.1 模型简介 145
8.2 使用模型 145
8.3 字段 146
8.3.1 AutoField 146
8.3.2 BigAutoField 146
8.3.3 BinaryField 146
8.3.4 BooleanField 146
8.3.5 CharField 147
8.3.6 DateField 147
8.3.7 DateTimeField 148
8.3.8 DecimalField 148
8.3.9 EmailField 149
8.3.10 FileField 149
8.3.11 FilePathField 150
8.3.12 FloatField 151
8.3.13 ImageField 151
8.3.14 IntegerField 151
8.3.15 GenericIPAddressField 151
8.3.16 PositiveIntegerField 152
8.3.17 PositiveSmallIntegerField 152
8.3.18 SlugField 152
8.3.19 SmallIntegerField 152
8.3.20 TextField 152
8.3.21 TimeField 152
8.3.22 URLField 152
8.3.23 UUIDField 152
8.4 字段参数 153
8.4.1 null 153
8.4.2 blank 153
8.4.3 choices 153
8.4.4 default 156
8.4.5 help_text 156
8.4.6 primary_Key 156
8.4.7 unique 156
8.4.8 verbose_name 156
8.5 表与表之间关系 157
8.5.1 多对一关系 157
8.5.2 多对多关系 157
8.5.3 一对一关系 158
8.6 模型元属性 158
8.7 元属性 158
8.7.1 abstract 159
8.7.2 app_label 159
8.7.3 base_manager_name 159
8.7.4 db_table 159
8.7.5 get_latest_by 159
8.7.6 order_with_respect_to 159
8.7.7 ordering 160
8.7.8 Indexes 160
8.7.9 constraints 161
8.7.10 verbose_name 161
8.7.11 verbose_name_plural 161
8.8 Manager 类 161
8.8.1 自定义Manager类 162
8.8.2 直接执行SQL语句 162
8.8.3 执行存储过程 165
8.9 数据增删改查 165
8.10 数据操作进阶QuerySets 171
8.10.1 创建对象 172
8.10.2 修改对象 172
8.10.3 更新ForeignKey 172
8.10.4 更新ManyToManyField 173
8.10.5 数据查询 174
8.10.6 链式过滤器 179
8.10.7 查询条件 180
8.10.8 模型深度检索 183
8.10.9 多条件查询 184
8.10.10 主键查询 185
8.10.11 查询条件中的%和_ 185
8.10.12 F函数 186
8.10.13 Func表达式187
8.10.14 QuerySet和缓存 188
8.10.15 复杂查询与Q对象 189
8.10.16 模型比较 190
8.10.17 复制模型实例 190
8.10.18 批量更新 190
8.10.19 模型关系 191
第9章 视图 193
9.1 视图结构 193
9.2 HTTP状态处理 193
9.3 快捷方式 195
9.3.1 render_to_string 195
9.3.2 render 195
9.3.3 redirect 196
9.3.4 get_object_or_404197
9.3.5 get_list_or_404 198
9.4 视图装饰器 198
9.4.1 HTTP方法装饰器 199
9.4.2 GZip压缩 199
9.4.3 Vary 200
9.4.4 缓存 201
9.5 Django内置视图 202
9.5.1 serve 202
9.5.2 错误视图 203
9.6 HttpRequest对象 204
9.6.1 属性 204
9.6.2 中间件属性 205
9.6.3 方法 206
9.6.4 QueryDict对象 207
9.7 HttpResponse对象 208
9.7.1 属性 209
9.7.2 方法 210
9.7.3 HttpResponse子类 211
9.7.4 JsonResponse 211
9.7.5 FileResponse 212
9.8 TemplateResponse对象 212
9.8.1 SimpleTemplateResponse对象 212
9.8.2 TemplateResponse对象 213
9.8.3 TemplateResponse对象渲染过程 214
9.8.4 回调函数 215
9.8.5 使用TemplateResponse对象 215
9.9 文件上传 216
9.9.1 单一文件上传 216
9.9.2 多文件上传 218
9.9.3 临时文件 219
9.10 类视图 219
9.10.1 类视图入门 219
9.10.2 继承类视图 220
9.11 通用视图 220
9.11.1 通用视图 220
9.11.2 修改通用视图属性 222
9.11.3 添加额外的上下文对象 222
9.11.4 queryset属性 223
9.11.5 动态过滤 224
9.11.6 通用视图与模型 225
9.12 表单视图 225
9.12.1 编辑表单视图 226
9.12.2 当前用户 228
第10章 模板 230
10.1 加载模板 230
10.2 模板语言 231
10.2.1 变量 231
10.2.2 标签 232
10.2.3 人性化语义标签 236
10.2.4 过滤器 239
10.2.5 注释 241
10.3 自定义标签和过滤器 241
10.3.1 编写自定义过滤器 242
10.3.2 编写自定义标签 243
10.4 模板继承 244
第11章 表单系统 250
11.1 Form类 250
11.2 表单字段类型 251
11.3 表单字段通用属性 255
11.4 表单与模板 255
第12章 中间件 257
12.1 缓存中间件 257
12.2 通用中间件 258
12.3 GZip中间件 258
12.4 有条件的GET中间件 258
12.5 语言环境的中间件 258
12.6 消息中间件 259
12.7 安全中间件 259
12.8 会话中间件 259
12.9 站点中间件 259
12.10 身份验证中间件 259
12.11 CSRF保护中间件 260
12.12 X-Frame-Options中间件 260
12.13 中间件排序 260
12.14 开发中间件 261
第13章 自动化测试 263
13.1 编写第一个测试用例 263
13.2 执行测试用例 264
13.3 修改代码中的bug 264
13.4 边界值测试 265
13.5 测试自定义视图 266
13.6 测试DetailView 268
第14章 国际化和本地化 270
14.1 名词解释 270
14.2 翻译概述 271
14.3 在Python中进行国际化 271
14.3.1 注释 272
14.3.2 空操作 273
14.3.3 复数 273
14.3.4 上下文标记 274
14.3.5 延迟翻译 275
14.3.6 本地化的语言名 276
14.4 编写模板代码 277
14.4.1 trans 277
14.4.2 blocktrans278
14.4.3 注释 279
14.5 翻译原理 279
第15章 安全 282
15.1 网络攻击与保护 282
15.1.1 跨站脚本攻击 282
15.1.2 跨站请求伪造攻击 283
15.1.3 SQL注入 284
15.1.4 点击劫持 284
15.2 检查配置信息 284
第16章 部署 286
16.1 WSGI和Application对象 286
16.2 Ubuntu部署Django 286
16.2.1 查看系统版本 286
16.2.2 更换国内源 286
16.2.3 查看Python版本 287
16.2.4 安装pip3 288
16.2.5 安装nginx 289
16.2.6 安装Django 289
16.2.7 安装uwsgi 289
16.2.8 命令行运行网站 290
16.2.9 配置uwsgi 290
16.2.10 配置nginx 291
16.2.11 启动网站 291
16.2.12 设置静态文件 292
16.2.13 自启动服务 293
16.3 CentOS部署Django 293
16.3.1 查看系统版本 293
16.3.2 更换国内源 294
16.3.3 更新Python 294
16.3.4 安装Django 296
16.3.5 安装uwsgi 296
16.3.6 命令行运行网站 296
16.3.7 配置uwsgi 296
16.3.8 安装nginx 297
16.3.9 自启动服务 298
附录A 语言码 299
附录B 日期格式化字符串 301
|
內容試閱:
|
非常感谢你选择本书,希望通过阅读本书能够为你带来帮助。
相信你在选择本书的时候已经对Django有了一定的了解,但是还请允许我在这里继续为大家介绍一下Django以及为什么写作本书。Django是用Python语言开发的一套开源Web框架,Python语言作为目前最流行的编程语言之一,已经不仅仅满足于早期的脚本开发,它被越来越多地应用于大型的、前沿的项目中,如科学计算和人工智能等。Django的出现为众多Python爱好者带来了福音,也为程序员的职业生涯拓宽了道路,现在我们也可以使用Python语言开发Web应用了。笔者有过多年的Web开发经验以及持续集成系统开发经验,曾经使用ASP.NET开发过Web应用,也用Jenkins、Shell开发过持续集成系统,但是,当使用Django开发网站的时候才真正体会到将脚本语言应用到Web开发中的乐趣,尤其是在搭建个人网站时,那种快速、自由的编码体验真的令人兴奋。为了对自己的工作做一个总结,也为更多初学者提供一本参考手册,所以决定写作本书。
本书主要包含四部分:
第一部分(第1章)为读者介绍Django的发展状况以及如何搭建Django开发环境。
第二部分(第2章)主要介绍什么是Web开发框架并通过搭建一个简单的Web框架帮助读者理解Web框架的工作原理。
第三部分(第3章)带领读者搭建一个网站,使读者能够从整体上了解Django。
第四部分(第4~16章)详细介绍Django各个模块的工作原理,通过学习这部分内容,读者将能够独立开发Django应用。
本书读者需要比较熟练地掌握Python语言,同时具备一定的Web开发基础,能够比较熟练地使用HTML、CSS、JavaScript,最好掌握一定的数据库开发知识,以便能够更容易地理解Django的ORM模型。
本书非常适合准备转向Web开发的Python工程师阅读,也适合正在使用Django开发Web应用的工程师作为参考手册。
在编写本书的过程中参考了Django官方文档,在此对Django团队以及社区表示真心的感谢。另外,编写本书以及学习Django的过程中从StackOverflow社区也获得了大量帮助,在此表示由衷的感谢。
由于本人能力有限,在编写本书的过程中可能有所疏漏,敬请读者指正。如果读者在阅读过程中发现本书的问题或者有好的建议,欢迎通过清华大学出版社网站(www.tup.com.cn)或者扫描二维码联系我们。
李健
|
|