@@ -214,6 +214,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
214
214
- ` models.py ` :存放应用的数据模型,即实体类及其之间的关系(MVC/MVT中的M)。
215
215
- ` tests.py ` :包含测试应用各项功能的测试类和测试函数。
216
216
- ` views.py ` :处理请求并返回响应的函数(MVC中的C,MVT中的V)。
217
+
217
218
2 . 进入应用目录修改视图文件views.py。
218
219
219
220
``` Shell
@@ -294,12 +295,15 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
294
295
295
296
``` Python
296
297
297
- from django.http import HttpResponse
298
-
299
298
from io import StringIO
300
- from random import randrange
301
299
302
- fruits = [' 苹果' , ' 草莓' , ' 榴莲' , ' 香蕉' , ' 葡萄' , ' 山竹' , ' 蓝莓' , ' 西瓜' ]
300
+ from django.http import HttpResponse
301
+
302
+ depts_list = [
303
+ {' no' : 10 , ' name' : ' 财务部' , ' location' : ' 北京' },
304
+ {' no' : 20 , ' name' : ' 研发部' , ' location' : ' 成都' },
305
+ {' no' : 30 , ' name' : ' 销售部' , ' location' : ' 上海' },
306
+ ]
303
307
304
308
305
309
def index (request ):
@@ -310,19 +314,35 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
310
314
output.write(' \t <title>首页</title>' )
311
315
output.write(' </head>\n ' )
312
316
output.write(' <body>\n ' )
313
- output.write(' \t <h1>Hello, world! </h1>\n ' )
317
+ output.write(' \t <h1>部门信息 </h1>\n ' )
314
318
output.write(' \t <hr>\n ' )
315
- output.write(' \t <ol>\n ' )
316
- for _ in range (3 ):
317
- rindex = randrange(0 , len (fruits))
318
- output.write(' \t\t <li>' + fruits[rindex] + ' </li>\n ' )
319
- output.write(' \t </ol>\n ' )
319
+ output.write(' \t <table>\n ' )
320
+ output.write(' \t\t <tr>\n ' )
321
+ output.write(' \t\t\t <th>部门编号</th>\n ' )
322
+ output.write(' \t\t\t <th>部门名称</th>\n ' )
323
+ output.write(' \t\t\t <th>所在地</th>\n ' )
324
+ output.write(' \t\t </tr>\n ' )
325
+ for dept in depts_list:
326
+ output.write(' \t\t <tr>\n ' )
327
+ output.write(f ' \t\t\t <td> { dept[" no" ]} </td> \n ' )
328
+ output.write(f ' \t\t\t <td> { dept[" name" ]} </td> \n ' )
329
+ output.write(f ' \t\t\t <td> { dept[" location" ]} </td> \n ' )
330
+ output.write(' \t\t </tr>\n ' )
331
+ output.write(' \t </table>\n ' )
320
332
output.write(' </body>\n ' )
321
333
output.write(' </html>\n ' )
322
334
return HttpResponse(output.getvalue())
323
-
324
335
```
325
336
337
+ 7 . 再次使用下面的命令来启动服务器并查看程序的运行结果。
338
+
339
+ ``` Shell
340
+
341
+ (venv)$ cd ..
342
+ (venv)$ python manage.py runserver
343
+ ```
344
+ ! [](./res/runserver.png)
345
+
326
346
# ### 使用视图模板
327
347
328
348
上面通过拼接HTML代码的方式生成动态视图的做法在实际开发中是无能接受的,这一点我相信是不言而喻的。为了解决这个问题,我们可以提前准备一个模板页,所谓模板页就是一个带占位符的HTML页面,当我们将程序中获得的数据替换掉页面中的占位符时,一个动态页面就产生了。
@@ -354,14 +374,22 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
354
374
< title> 首页< /title>
355
375
< /head>
356
376
< body>
357
- <h1 >{{ greeting }} </h1 >
377
+ < h1> 部门信息 < /h1>
358
378
< hr>
359
- <h3 >今天推荐{{ num }}种水果是:</h3 >
360
- <ul >
361
- {% for fruit in fruits %}
362
- <li >{{ fruit }}</li >
363
- {% endfor %}
364
- </ul >
379
+ < table>
380
+ < tr>
381
+ < th> 部门编号< /th>
382
+ < th> 部门名称< /th>
383
+ < th> 所在地< /th>
384
+ < /tr>
385
+ {% for dept in depts_list %}
386
+ < tr>
387
+ < td> {{ dept.no }}< /td>
388
+ < td> {{ dept.name }}< /td>
389
+ < td> {{ dept.location }}< /td>
390
+ < tr>
391
+ {% endfor %}
392
+ < /table>
365
393
< /body>
366
394
< /html>
367
395
` ` `
@@ -379,19 +407,16 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
379
407
` ` ` Python
380
408
381
409
from django.shortcuts import render
382
- from random import randrange
383
410
411
+ depts_list = [
412
+ {' no' : 10, ' name' : ' 财务部' , ' location' : ' 北京' },
413
+ {' no' : 20, ' name' : ' 研发部' , ' location' : ' 成都' },
414
+ {' no' : 30, ' name' : ' 销售部' , ' location' : ' 上海' },
415
+ ]
384
416
385
- def index (request ):
386
- fruits = [' 苹果' , ' 香蕉' , ' 草莓' , ' 葡萄' , ' 山竹' , ' 杨梅' , ' 西瓜' , ' 榴莲' ]
387
- start, end = 0 , randrange(len (fruits))
388
- ctx = {
389
- ' greeting' : ' Hello, Django!' ,
390
- ' num' : end + 1 ,
391
- ' fruits' : fruits[start:end + 1 ]
392
- }
393
- return render(request, ' index.html' , ctx)
394
417
418
+ def index(request):
419
+ return render(request, ' index.html' , {' depts_list' : depts_list})
395
420
` ` `
396
421
397
422
到此为止,我们还没有办法让views.py中的render函数找到模板文件index.html,为此我们需要修改settings.py文件,配置模板文件所在的路径。
@@ -436,7 +461,6 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
436
461
(venv)$ python manage.py runserver
437
462
` ` `
438
463
439
- ![ ] ( ./res/runserver.png )
440
464
441
465
# ## 总结
442
466
0 commit comments