以前写的乱了 ,这次转到ubuntu下,又重新装了一次。重新记录:
1.apache安装。apt-get install apache2
2.mod_wsgi安装。sudo apt-get install libapache2-mod-wsgi
3.mysql安装。sudo apt-get install mysql-server
4.python-mysql安装。sudo apt-get install python-mysqldb
5.django 安装 先到官网下载然后按照官网的方法安装
tar xzvf Django-1.3.1.tar.gz
cd Django-1.3.1
sudo python setup.py install
Read more...
Archive for django
django 前端时间控件移植记录
在网上找到一篇文章《将django的管理端控件用到前端页面》,写得很详细。自己还需要时间的设定,就粗略的研究了一下django后台admin的时间控件的设置使用。
forms.py文件
Read more...
from django.contrib.admin import widgets
linetime = forms.DateTimeField(required=True,label='时间',widget=widgets.AdminDateWidget())
head中增加如下代码
{{ form.media }}
{{ form.media }}添加了两条script语句。
body中添加{{ form.linetime }}
widgets.py文件中的几个def:
AdminDateWidget,这个是只有日期的时候,在froms中使用。
AdminTimeWidget,这个在只有时间。
AdminSplitDateTime,这个时间和日期都有,按情况选择就OK了。
django上传图片和PIL生成缩略图
models.py里的写法:
link = models.ImageField(upload_to='pic/' ,blank=True,null=True)
forms.py里的写法:
image = forms.ImageField(required=False)# required = false 不是必填项
template里的写法:
<form enctype="multipart/form-data" method='post' action='.'>{% csrf_token %}
其中生成的表单是name=“image”,见forms
views.py里的写法,没写完,只是实现了上传和缩略图功能:
Read more...
if request.method == 'POST':
form = AddArticlesForm(request.POST,request.FILES)
#如果用户提交的表单数据验证合法
if form.is_valid():
if 'image' in request.FILES:
image = request.FILES["image"]
#debug()
img= Image.open(image)
img.thumbnail((250,250),Image.ANTIALIAS)
url='pic/'+image.name
name= 'E:/django/plant/media/'+url
img.save(name,"jpeg")
pic = Pic(articles=newarticle,
link=url,
)
pic.save()
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高级内容先不研究了。等把权限和组还有分类设定好在说。