下面是从网上找的的,先记录:
在apache1.3.x中, 使用gzip来对内容进行压缩.
在新版的apache2.x里, deflate模块代替了gzip模块,用于对内容进行压缩.
查看Apache是否有deflate这个模块,目录:/etc/apache2/mods-available/
启用这个mod:sudo a2enmod deflate
编辑deflate的配置文件: /etc/apache2/mods-available/deflate.conf
官网:http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
一篇关于Apache优化的文章:http://my.oschina.net/lamp2me/blog/15317
默认Apache是所有插件都启用了,在配置文件apache2中可以看到,就不用启用了。
Read more...
Archive for web-2
Ubuntu下mysql数据库的编码修改
上传到Ubuntu服务器后错误百出,报错Data truncated for column 'title' at row 1,
Google搜索发现是编码不统一的问题。
查看数据库编码的方法:
show variables like 'character%';
修改/etc/mysql/my.cnf文件
找到客户端配置[client] 在下面添加
default-character-set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 默认字符集为utf8
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
重启mysql服务:service mysql restart
再查看发现成为utf8了。
drop掉原来建立的数据库,新建一个utf8的:
CREATE DATABASE ms_db CHARACTER SET utf8 ;
前台测试,不再报错。
Read more...
ubuntu Apache+mod_wsgi错误提示
ExtractionError: Can't extract file(s) to egg cache
The following error occurred while trying to extract file(s) to the Python egg
cache:
[Errno 13] Permission denied: '/var/www/.python-eggs'
The Python egg cache directory is currently set to:
/var/www/.python-eggs
Perhaps your account does not have write access to this directory? You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.
解决办法:
mkdir /var/www/.python-eggs
chmod -R 777 /tmp/.python-eggs
设置PYTHON_EGG_CACHE环境变量
$ SetEnv PYTHON_EGG_CACHE /tmp/aaa/
##(setenv是在cshell中用的,在bshell中用的是 export
不同的SHELL设置变量的方法很不一致:
csh : set、setenv
bash : set、export
ksh : set、export或直接赋值
vim /etc/profile
export PYTHON_EGG_CACHE=/tmp/.python-eggs
source /etc/profile
export PYTHON_EGG_CACHE=/tmp/.python-eggs
env |grep egg
chmod -R 777 /tmp/.python-eggs
or # vi /root/.bashrc
export PYTHON_EGG_CACHE=/tmp/.python-eggs
)
目录权限注意要是apache用户,或者简单点就777
Read more...
django建站之SMTP发送邮件
用户注册需要邮箱的验证,找回密码需要邮箱。我选择用gmail邮箱来发送邮件,配置如下:
settings.py文件中添加:
#邮箱设置
EMAIL_HOST = 'smtp.gmail.com'
#EMAIL_PORT = '465'
EMAIL_HOST_USER = 'name@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_USE_TLS = True
端口的设置,可能是默认的25,开始没有成功。
发送邮件代码:
from django.core.mail import send_mail
send_mail('subject','body','name@gmail.com', ['to_some@mail.com'],fail_silently=True)
非常简单。
Read more...
django用户登录,是否记住用户登录状态的session实现
用户登录的时候,选择是否记住登录状态,就是所谓的自动登录。又是从官网上找到了,兴奋ing~
django官网的文档很好,很详细。
Browser-length sessions vs. persistent sessions一节讲django的记录用户登录的机制。
settings文件里的SESSION_EXPIRE_AT_BROWSER_CLOSE为True时,在用户关闭浏览器时,登录状态就会失效。
为False是,用户关闭浏览器后,下次打开浏览器不需要重新登录。
如果需要用户能够哦你各种这个功能,我们需要借助request.session的方法set_expiry()。
set_expiry(VALUE)设置:
1.如果是个整数,表示帐号的存活时间。request.session.set_expiry(300)
2.VALUE还可以是个datetime or timedelta。
3.如果是0,则会在关闭浏览器时失效。
4.可以为None。
只需要在登录页面上加入一个checkbox,再在views里进行判断就Ok了。
Read more...
django forms的模板自定义实现
django提供的forms可以很方便的实现创建表单,表单内容的过滤,提交。但是表单模板返回的固定代码。
开始学习的翻译文档,forms自定义表单模板的成分很少,特别是errors的介绍。查资料没找到。又看官网,找到了(还是官网好哇~)。
复制代码上来,做分享。
<div>
<label for="id_username">用户名:</label>
<div>
{{ form.username }}
{% if form.username.errors %}
<span>
{% for error in form.username.errors %}
{{ error|escape }}
{% endfor %}
</span>
{% else %}
<p>用户名中只能包含字母、数字、下划线和汉字。<p>
{% endif %}
</div>
</div>
Read more...
django 模板系统学习之过滤器记录
记录几个常用的过滤器:
{{my_text|escape|linebreaks }}
escape
按照以下的规则,转义一个HTML字符串:
Read more...
- "&" to "&"
- < to "<"
- > to ">"
- '"' (double quote) to '"'
django 用户发站内消息应用实现
用django写了一个站内用户之间发送消息的应用,应用虽小但五脏俱全。写完后总结了一下:
1、建立messages应用。
2、models设计:设置了7个字段,标题,内容,时间,发消息送人,接受人消息,发送消息是否删除,接受消息是否删除。
3、admin.py简单设置了一下,加入群发的功能。
4、forms实现:接收消息的人的验证,标题的验证,数据的保存。
5、url.py设置:6个,发送的消息,接收的消息,发送消息,查看消息,删除消息,回复消息。
6、views.py实现:每个URL对应一个def,这里在官网看到一个用法,翻译的2.0文档没看到(没仔细看),
from django.contrib.auth.decorators import login_required
@login_required(login_url='/users/login/')#在每个def上面加上这么一句就OK了,login_url指定了跳转到你设置的登录URL。我的登录URL让我改了。
用户注册用户名需要过滤。记录
Read more...
django contrib.admin使用记录2
在上一篇中django contrib.admin使用记录一 中ArticlesAdmin,类添加
Read more...
#用于显示admin管理界面的change中显示的属性。
list_display = ('title','user','ip','datetime')
#可以在change页面中直接点击title和user进行编辑
list_display_links = ('title','user')
#用那个属性对所有对象进行筛选,可在右边显示
list_filter = ('user',)
#按哪个属性搜索
search_fields = ('title',)
更多属性参考django官网‘The Django admin site’。
在models.py文件建立Articles类的内部类:
#内部类,用于指定Articles数据模型的一些元数据
class Meta:
#指定Articles在后台显示的名称
verbose_name_plural = '文章'
这仅仅是将一个小应用在admin管理页中的显示,admin高级内容先不研究了。等把权限和组还有分类设定好在说。
django contrib.admin使用记录一
安装管理应用程序。在你的 INSTALLED_APPS 的设置中加入 "django.contrib.admin" 。
如果你是一直照步骤做下来的,请确认 "django.contrib.sessions" , "django.contrib.auth" , 和 "django.contrib.contenttypes" 前面的注释已去掉,因为管理程序需要它们。请同时去掉所有 MIDDLEWARE_CLASSES 设置行中的注释,并清除 TEMPLATE_CONTEXT_PROCESSOR 设置,以便它可以重新使用缺省值。
运行 python manage.py syncdb 。这一步将生成管理界面使用的额外数据库表。
修改url.py文件,修改三个地方。
在应用目录下,新建文件admin.py,写django代码:
Read more...
#-*- coding:utf-8 -*-
from django.contrib import admin
from plant.articles.models import Articles
class ArticlesAdmin(admin.ModelAdmin):
pass
admin.site.register(Articles, ArticlesAdmin)
Articles为应用,这样你就可以在admin管理界面看到了