摘要: 1 from fake_useragent import UserAgent 2 3 class RandomUserAgent(object): 4 # def __init__(self,crawl): 5 # super(RandomUserAgent,self).__init__() 6 # 阅读全文
posted @ 2017-06-10 17:13 hcw_19 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 布署 从uwsgi、nginx、静态文件三个方面处理 服务器介绍 服务器:私有服务器、公有服务器 私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问 公有服务器:集成好运营环境,销售空间或主机,供其布署自己的应用 私有服务器成本高,需要专业人员维护,适合大公司使用 公有服务 阅读全文
posted @ 2017-06-10 14:58 hcw_19 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 中间件 是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中 每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个 _init _:无需任何参数,服务器 阅读全文
posted @ 2017-06-10 14:51 hcw_19 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 使用Ajax 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差 改进方案:通过ajax的方式获取数据,通过dom操作将数据呈现到界面上 推荐使用框架的ajax相关方法,不要使用XMLHttp 阅读全文
posted @ 2017-06-10 14:49 hcw_19 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数 属性 count:对象总数 num_pages:页面总数 page_range:页码 阅读全文
posted @ 2017-06-10 14:46 hcw_19 阅读(282) 评论(0) 推荐(0) 编辑
摘要: Admin站点 通过使用startproject创建的项目模版中,默认Admin被启用 1.创建管理员的用户名和密码 python manage.py createsuperuser 然后按提示填写用户名、邮箱、密码 2.在应用内admin.py文件完成注册,就可以在后台管理中维护模型的数据 fro 阅读全文
posted @ 2017-06-10 14:44 hcw_19 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 上传图片 当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为<input type="file" name="" />中的name 注意:FILES只有在请求的方法为POST 且提交的<form>带有enctype="multipart/form- 阅读全文
posted @ 2017-06-10 14:43 hcw_19 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 管理静态文件 项目中的CSS、图片、js都是静态文件 配置静态文件 在settings 文件中定义静态内容 STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] 在项目根目录下创建static 阅读全文
posted @ 2017-06-10 14:42 hcw_19 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 验证码 在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力 使用验证码也是一种有效的防止crsf的方法 验证码效果如下图: 验证码视图 新建viewsUtil.py,定义函数verifycode 此段代码用到了PIL中的Image、 阅读全文
posted @ 2017-06-10 14:36 hcw_19 阅读(317) 评论(0) 推荐(0) 编辑
摘要: csrf 全称Cross Site Request Forgery,跨站请求伪造 某些恶意网站上包含链接、表单按钮或者JavaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作,这就是跨站攻击 演示csrf如下 创建视图csrf1用于展示表单,csrf2用于接收po 阅读全文
posted @ 2017-06-10 14:34 hcw_19 阅读(195) 评论(0) 推荐(0) 编辑
摘要: HTML转义 Django对字符串进行自动HTML转义,如在模板中输出如下值: 视图代码: def index(request): return render(request, 'temtest/index2.html', { 't1': '<h1>hello</h1>' }) 模板代码: {{t1 阅读全文
posted @ 2017-06-10 14:29 hcw_19 阅读(1578) 评论(0) 推荐(0) 编辑
摘要: 模板继承 模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板中填充 extends继承:继承,写在模板文件的第一行 定义父模板base.html 定义子模板inde 阅读全文
posted @ 2017-06-10 14:27 hcw_19 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 定义模板 模板语言包括 变量 标签 { % 代码块 % } 过滤器 注释{# 代码或html #} 变量 标签 { % 代码块 % } 过滤器 注释{# 代码或html #} 变量 语法: 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出 变量名必须由字母、数字、下划线(不能以下划线开头)和点 阅读全文
posted @ 2017-06-10 14:24 hcw_19 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 阅读全文
posted @ 2017-06-10 14:22 hcw_19 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 状态保持 http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 客户端与服务器端的一次通信,就是一次会话 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 存储方式包括cookie、session,会话一般指session对象 使用cookie,所有数据存储在客户端,注 阅读全文
posted @ 2017-06-10 14:20 hcw_19 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调用模板,直接返回数据 #coding=utf-8 from django.http import H 阅读全文
posted @ 2017-06-10 14:18 hcw_19 阅读(13220) 评论(0) 推荐(1) 编辑
摘要: POST属性 QueryDict类型的对象 包含post请求方式的所有参数 与form表单中的控件对应 问:表单中哪些控件会被提交? 答:控件要有name属性,则name属性的值为键,value属性的值为键,构成键值对提交 对于checkbox控件,name属性一样为一组,当控件被选中后会被提交,存 阅读全文
posted @ 2017-06-10 14:16 hcw_19 阅读(759) 评论(0) 推荐(0) 编辑
摘要: GET属性 QueryDict类型的对象 包含get请求方式的所有参数 与url请求地址中的参数对应,位于?后面 参数的格式是键值对,如key1=value1 多个参数之间,使用&连接,如key1=value1&key2=value2 键是开发人员定下来的,值是可变的 示例如下 创建视图getTes 阅读全文
posted @ 2017-06-10 14:14 hcw_19 阅读(852) 评论(0) 推荐(0) 编辑
摘要: QueryDict对象 定义在django.http.QueryDict request对象的属性GET、POST都是QueryDict类型的对象 与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况 方法get():根据键获取值 只能获取键的一个值 如果一个键同时拥 阅读全文
posted @ 2017-06-10 14:13 hcw_19 阅读(2353) 评论(0) 推荐(2) 编辑
摘要: HttpReqeust对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象 视图函数的第一个参数是HttpRequest对象 在django.http模块中定义了HttpRequest对象的API 属性 下面除非特别说明,属性都是只读的 path:一个字符串,表示请求的页 阅读全文
posted @ 2017-06-10 14:12 hcw_19 阅读(290) 评论(0) 推荐(0) 编辑