标签归档:django

RSS feed of django

django 几个小 tips

django 几个小 tips

django forms

djang forms 是django非常有用的功能之一,展示表单和接收表单数据非常方便。

css class

比如下面的代码:

n_tz = forms.ChoiceField(choices=TIMEZONE_CHOICE, initial=8, required=True, widget=forms.Select(attrs={"class": "form-control", "id": 'n_tz'}))

实现了两个常用的功能
- 指定css class 和 id
- initial 初始值

动态改变表单验证逻辑

我们经常有这样的需求,field b不是必填项,field c也不是必填项,但是如果b不为空,c也需要不为空。我们可以定义一个 clean_c 的函数(函数名为clean_)来实现这个功能,也可以定义clean函数。

class DemoForm(forms.Form):
    a ...

继续阅读

djang data migration

djang data migration

在使用django框架开发的过程中,我们不可避免的遇到models层的变更,就涉及到数据库表的变动,django给我提供了一个migration的工具来做这些数据库表的变更。

djang migration

如果不加appname,那么就是指所有包含migrations 目录的app

# 基于当前的model 检测修改,创建迁移策略文件
python manage.py makemigrations <appname>
# 执行迁移动作
python manage.py migrate

migrations失败

有时候如果models改动比较大,migrations会失败,这个时候有两种选择,手工去修改migrations文件,第二种是清除所有migrations,重新migrate

手工修改migrations文件

通过报错信息加上SQL语句找到找到问题,然后具体问题具体分析,是修改数据库里面的数据,还是修改migrations生成的脚本。

python manage.py migrate

python manage.py sqlmigrate <appname> 0001

当处理模型修改的时候:

  • 如果模型包含一个未曾在数据库里建立的字段,Django会报出错信息。 当你第一次用Django的数据库API请求表中不存在的字段时会导致错误。

  • Django不关心数据库表中是否存在未在模型中定义的列。

  • Django不关心数据库中是否存在未被模型表示的table。

在使用SQLite3数据库时, 因为SQLite3 ...

继续阅读

如何在亚马逊ec2上部署django应用

如何在亚马逊ec2上部署django应用

很多时候我们会在环境配置上花大量的时间,这里我记录了一下我配置的过程,希望能节省大家一些的时间。

我的环境是amazon ec2,选择的操作系统是Amazon Linux AMI 2015.03 (HVM) ,选择的最常见的部署方案 nginx + gunicorn + django + mysql

mysql

首先安装mysql-sever:

$sudo yum install mysql-server mysql mysql-devel
$sudo chown mysql.mysql -R /var/lib/mysql

修改配置文件/etc/my.cnf:

[mysqld]
datadir=/var/lib/mysql # 数据文件存放的位置,修改成适合的位置

character-set-server=utf8 # 设置默认编码

[client]
default-character-set=utf8 # 设置默认编码

启动mysql:

$sudo service mysqld ...

继续阅读

如何使用django-zinnia-blog建站

如何使用django-zinnia-blog建站

django-zinnia-blog 顾名思义就是一套用Django开发的个人博客程序,虽然比大名鼎鼎的wordpress略显简陋,不过在以Python作为开发语言的博客系统中算是很不错的。

pip

如果Python版本是2.7.9或者是3.4 以上,pip默认包含于Python的安装包中

怎么安装pip,参考这里 https://pip.pypa.io/en/latest/installing.html

virtualenv

virtualenv 用于创建独立的Python环境,可以不受全局的site-packages当中安装的包的影响。:

pip install virtualenv
# 创建虚拟环境
virtualenv ENV
cd ENV
source ./bin/activate

磨刀不误砍柴工,接下来开始大展身手啦。

django-zinnia-blog

直接使用pip安装:

pip install Pillow
pip install django-zinnia-blog
#如果数据库使用MySQL
pip install python-mysql

然后按照 http://docs.django-blog-zinnia ...

继续阅读