django开发步骤

来源:互联网 发布:sas数据分析 编辑:程序博客网 时间:2024/04/30 13:55

 django 开发步骤
1.django-admin startproject pro
2.manager startapp app
*3.修改models.py,定义数据库表结构 //定义数据库结构类,也即之后views.py中使用的数据库操作类
*4.修改views.py,定义url请求处理函数和使用哪个模版输出 //一个url请求对应一个处理函数
*5.
创建模版目录和模版文件,修改settings.py注册app和指定模版目录
6.最终修改urls.py,来定义url和views.py中的处理函数对应。

 

工作量在于

3、数据库定义

4、视图函数定义(url请求处理函数)

5、设计模版文件html,合适的显示布局

 

==============详细说明===============

#将django-admin.py文件所在目录放到path
#创建一个工程,工程下还可以创建很多app(application)后面涉及模型时需要通过./manage.py startapp app1讨论。
#静态网页只要执行下面第1步即可


创建工程方法:
步骤1. django-admin.py startproject project1 #假如提醒执行不了django-admin.py,修复下python安装程序即可
__init__.py
manage.py
settings.py #设置数据库连接、模版文件路径等配置信息
urls.py #其实是mvc中的控制器功能,用于url和视图函数的映射,一个url地址对应一个视图函数(即不同的html页面)
#touch views.py创建视图文件,里面存放生成并反馈给浏览器html页面的视图函数,即view的功能(在这里处理静态模版)

步骤2. python ./manage.py startapp app1
#ls app1
__init__.py
views.py
models.py  #mvc的模型层,数据库操作对象
tests.py

====================
开始修改views.py
返回一个完整的http请求的数据(HttpResponse)流程,这里四种方式
步骤1. 增加视图函数(一个视图函数输出一个html页面,可以根据模板参数动态生成不同内容的页面)
+++视图函数中处理静态模板文件html的方法如下:
方法1:
 直接构造
 t = Template("<html><body>内容 {{current_date}}. </body></html>")


方法2: 
 fp = open("datetime.html")
 t = Template(fp.read())方式构造


方法3:(这种方法比上面两种方法更简洁)
 t = get_template("datetime.html") #datetime.html所在目录可以在settings.py中设定 

+++处理模板中的{{模版变量}}
 获取了html内容后,调用模版对象的render(Context({模板变量:值}))方法来渲染静态的html,返回处理后的html
 
+++返回http响应数据,即:render(Context({模板变量:值}))处理后的html页面。
 return HttpResponse(html)
-------------------
方法4: 除去上面3种返回HttpResponse(html)的方式,django.shortcuts下的render_to_response("模版文件.html",Context({字典}))
替代了上面3种手工加载模版到返回HttpResponse(html)的方式。
 return render_to_response()
====================

理解了上述对最简单模版的加载处理,接下来讲模版文件的内容
一个模版文件.html可以include加载另一个模版文件,使用命令{% include "base.html" %} 单、双引号都可以。
include之后会导致一个重复内容的问题,那么django提出了一个“模板继承”的概念,对于web设计很重要。

模板继承:
 减少公共页面区域,如:站点导航所引起的重复和冗余代码
 方法:
  1,使用server端的include传统做法
  2,继承模版{先构建一个通用的基础框架模板,然后在子模板中对公共的{{模板标签}}进行值的修改(重载)。
  需要重载的模版标签前加%block 和{% endblock% }来修饰模板
  2.1 base.html内容:{%block title%}{%endblock%}
  2.2 子模板中通过{% extends "base.html" %}来继承模板,再通过{%block title %}赋值内容{% endblock %}来对title标签赋值。

 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
熟悉了MTV的模型,开发时关注在 模型设计(数据库表结构类)、视图函数(用来处理url请求和使用哪个模版)、模版的设计(显示模版变量的html页面) 即可

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 


 

 

原创粉丝点击