转自:http://blog.csdn.net/iloveyin/article/details/49560559
adsa
在用django开发博客时,首页只需要展示文章的一部分内容。可以用内置的filter来实现。在此mark一篇博客。
Django是个很伟大的东西,它的前端也非常容易上手,只需要掌握它的Template语言。这其中有个非常重要的东西叫filter,又叫过滤器。从本质上讲filter就是一个Python函数,取左端的为输入,分号后面为参数,进行处理后向右端输出,具体用法下面具体讲。当然除了我们自定义filter以外,Django内置的filter也已经足够强大,今天我们的主题就是其中的一类。
也许写过前端代码的你一定遇过以下问题中的一个,又还没解决,那么我觉得这篇文章值得一读
- 从数据库中取出来带有Html标签的字符串,而你只想显示纯文本。
- 从数据库中取出来带有Html标签的字符串,你希望显示被装饰后的富文本。
- 在首页截取文章的一部分显示时导致了首页整个乱了。
- 在Js里调用数据库中的东西时,有时候导致Js代码出现语法错误
- 有时候想把’ ‘显示成 有时候想把<显示成’<'
- 等等...
先说大牛们处理这类问题的方法,手写一系列符合自己要求的过滤器,便迎刃而解;但我们只想用Django自带的filter,下面我们一个一个介绍用到的filter,最后利用这些filter解决上述的疑难杂症。
safe
让Html标签以及一些特殊符号(如<)生效,下面以例子说明:
value = '<b>CPT</b>'
#那么输出的时候,CPT就是加粗的,如果不加safe那么显示出来的就是纯文本<b>CPT</b>
{{ value|safe }}
striptags
取消所有Html标签,下面以例子说明:
#value = '<p><b>CPT</b></p>'
#那么输出的时候,只有CPT且没有加粗没有段落;如果不加的话会显示全部文本<p><b>CPT</b></p>
{{ value|striptags }}
linebreaks
让\n这种控制符号变化Html可以识别的
#
value =
转自:
1. http://python.usyiyi.cn/django/howto/static-files/index.html
2. http://www.cnblogs.com/MnCu8261/p/6013557.html
最近准备用django写一个博客,界面直接用的leanote的界面,第一次接触到django中的静态文件管理,再次mark一篇博文,一篇文档
django中的静态文件管理
一个站点通常需要保存额外的文件,比如图片、css样式文件、js脚本文件,在django中,倾向于将这些文件称为静态文件。django提供了django.contrib.staticfiles 模块来帮助我们方便的管理静态文件。
配置静态文件的两种方式
- 配置单独app下的静态文件,比如某个app下的单独文件
- 配置整个project下的静态文件,适用于那些和单独app关联不大的文件,比如jquery、bootstrap等等
配置步骤
- 首先,我们需要确认在settings.py文件中的INSTALLED_APPS变量中存在 django.contrib.staticfiles
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)
2.如果我们要配置单独app下的静态文件的话,执行此步骤。
- 在settings.py文件中定义 STATIC_URL 变量。
STATIC_URL = '/static/'
- 如果我们要配置单独app下的静态文件的话,这时,我们需要在app中建立一个名为static的文件夹。
3.如果我们要配置整个project下的静态文件的话,执行此步骤。
- 如果我们要配置整个project下的静态文件的话,我们需要在整个project 中建立一个
django的下载安装
根据官网下载安装django
pip install Django==1.11
创建项目
# 创建项目,目录名即为项目名称
djingo-admin <project_name>
在项目目录下,python manage.py runserver启动本地服务器
- manage.py: 用来命令行交互的,管理项目用的
- setting.py: 用来配置项目的一些设置,比如允许url、语言、静态文件等等
- wgsi: 主要是和服务器网关有关系,暂时不用管
应用
一个项目可以有多个应用,比如可以用python mangage.py startapp blog创建了一个blog应用,那么项目目录下就会生成一个blog的文件夹。
应用(比如blog)文件夹里会有一个view.py的文件,这个文件里定义视图的部分。如果要使用该应用(比如blog),那么一定要记住安装该应用,即在项目文件夹/setting.py中的install_app数组里添加该应用名称。
urls.py
项目文件夹下的urls.py里可以映射url到对应的函数执行部分。这里要提及include这个方法,这个方法可以用来使用嵌套路由。
render方法
view视图模块如果需要加载html文件怎么办?那么可以使用render方法渲染html文件,在应用目录下新建templates,然后加入模板文件就行,数据通过DTL模板引擎解析。注意:render方法寻找模板文件是通过install_app里的顺序来找的,所以如果不同应用间模板名称重复,那么建议在templates目录下在多加一层应用名称的目录,以区分开来不同应用的模板,同时render方法也应该多写一层应用名称的路径。
model
model需要先在models.py下创建数据表对应的类,属性即对应着字段,写好之后,执行
python manage.py makemigrations <app_name>
如果不填写应用名称,那么即视为对所有app操作。然后执行python manage.py migrate即可以将对应类的数据映射到sqlite3中去了。
参考慕课网的爬虫教程
简单的爬虫架构
- 爬虫调度端:启动、停止、监听爬虫
- 爬虫程序:
- url管理器:管理已爬取ur和待爬取的url,取出一个待爬取url送入网页下载器
- 网页下载器:将url指定的网页下载存储成字符串,将字符串送入网页解析器
- 网页解析器:从字符串中解析出有价值的信息和数据,并爬取取出其中其他网页的url,送入url管理器
- 三个模块形成循环
- 得到价值数据
URL管理器
网页下载器
- 第一种方法
import urllib2
# 直接请求
response = urllib2.urlopen('http://www.baidu.com')
# 获取状态码
print response.getcode()
# 读取内容
cont = response.read()
- 第二种方法
import urllib2
# 创建Request对象
request = urllib2.Request(url)
# 添加数据
request = request.add_data('a','1')
# 添加http的head
request = add_header('User-Agent','Mozilla/5.0')
# 发送请求获取结果
response = urllib2.urlopen(request)
- 第三种方法
import urllib2,cookielib
# 创建cookie容器
cj = cookielib.CookieJar()
# 创建一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# 给urllib2安装opener
urllib2.install_opener(opener)
# 使用带有cookie的urllib2访问网页
response = urllib2.urlopen("http://www.baidu.com")
网页解析器
pip install beautifulsoup4
安装beautifulsoup4- 创建BeautifulSoup对象
from
最后折腾了几天,还是用了pycharm 23333
sublime安装和配置
这个安装和配置和简单,和以往一样就行
安装python
在计算机->属性->高级设置->环境变量->系统变量->Path中添加Python的安装位置,如D:\Python27\
,这个配置完,重启sublime,然后ctrl+b就能允许当前py文件,并打印log
python的sublime3的相关插件
- Python Flake8Lint
代码不规范时会在前面显示一个红色的小灯笼,每次运行会提示你怎么修改
保存代码的时候也会提示不规范的地方
Ctrl + Alt + Shift + 8 提示修改
Ctrl + Alt + Shift + 9 提示修改下一个错
当一行代码太长时,会提示,所以修改一下默认的代码行长度就行了Preferences -> Package Settings -> Flake8Lint -> Settings-Default
Anaconda
代码检测工具
- 代码检验使用PyLine,因此注释掉代码检验,在偏好->包设置->用户设置中加入
{
"anaconda_linting":false
}
SublimeCodeIntel
智能提示工具
这个插件和Anaconda的许多特性类似,可装可不装,配置如下,这个了解的不多
{
"Python": {
"python":"D:/Python27/python.exe",
"pythonExtraPaths":
[
"D:/Python27",
"D:/Python27/DLLs",
"D:/Python27/Lib",
"D:/Python27/Lib/lib-tk",
"D:/Python27/Lib/site-packages"
]
}
}
SublimeREPL
Tool->SublimeREPL->Python->Run currunt file可以运行当前环境(