Archive for django

以前写的乱了 ,这次转到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  

Ubuntu PIL安装Python Imaging Library

http://0x55aa.sinaapp.com/linux/307.html

ubuntu Apache+mod_wsgi错误提示

http://0x55aa.sinaapp.com/linux/303.html

Ubuntu安装配置Apache和mod_wsgi

http://0x55aa.sinaapp.com/linux/267.html

Ubuntu下mysql数据库的编码修改

http://0x55aa.sinaapp.com/linux/305.html  

Continue

在网上找到一篇文章《将django的管理端控件用到前端页面》,写得很详细。自己还需要时间的设定,就粗略的研究了一下django后台admin的时间控件的设置使用。 forms.py文件

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了。

Continue

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里的写法,没写完,只是实现了上传和缩略图功能:

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()

Continue

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

Continue

用户注册需要邮箱的验证,找回密码需要邮箱。我选择用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) 非常简单。

Continue

用户登录的时候,选择是否记住登录状态,就是所谓的自动登录。又是从官网上找到了,兴奋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了。



Continue

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>

Continue

  记录几个常用的过滤器: {{my_text|escape|linebreaks }} escape 按照以下的规则,转义一个HTML字符串:

  • "&" to "&amp;"
  • < to "&lt;"
  • > to "&gt;"
  • '"' (double quote) to '&quot;'
"'" (single quote) to '&#39;' linebreaks 把换行符转换成<p>和<br />标签。 addslashes 给敏感字符添加斜线(转义). 举例,要将一个字符串传递给 JavaScript 时.添加反斜杠到任何反斜杠、单引号或者双引号前面。 {{ "ABCD"|linebreaksbr }} 用新行用<br /> 标记包裹,这个也不会识别html标签只会实现换行。  

Continue

用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让我改了。 用户注册用户名需要过滤。记录

Continue

在上一篇中django contrib.admin使用记录一 中ArticlesAdmin,类添加

#用于显示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高级内容先不研究了。等把权限和组还有分类设定好在说。

Continue