Django笔记一

##这里是Django日常工作中随手记录下来的一些笔记和摘要。便于日后查询。

首先,Django需要很多第三方包,我这里直接用virtualenv做环境部署,这样可以为每个应用创建一套独立的隔离的python运行环境。

用virtualenv创建一个独立的虚拟环境:

pip install virtualenv
mkdir virtualenv
cd virtualenv/

创建并进入虚拟环境:

virtualenv --no-site-packages ffvenv #创建环境
source ffvenv/bin/activate   #进入虚拟环境

退出当前虚拟环境:

deactivate

virtualenvwrapper 是可选方案,它可以提供多个虚拟环境的统一管理方案,安装如下:

pip install virtualenvwrapper

在虚拟环境中安装python3和pip
python下载链接https://www.python.org/ftp/python/

pip -V
pip install --upgrade pip
pip install Django==1.11.8

另外,附上windows下建立虚拟环境并配置django的方案:

pip install virtualenvwarpper-win
mkvirtualenv testvir2
deactivate  #退出

workon
workon testvir2 #进入虚拟环境
pip list
pip install requests
pip uninstall requests
pip install Django==1.11.8

Django的settings文件配置

数据库配置:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "testdjango",
        'USER': "root",
        'PASSWORD': "xxx",
        'HOST': "192.168.1.xxx"
    }
}   #数据库配置

LANGUAGE_CODE = 'zh-hans' #中文配置
TIME_ZONE = 'Asia/Shanghai' #时区配置
USE_TZ = False  #数据库时间配置
TEMPLATE下的DIRS的配置
新建STATICIFLES_DIRS的配置

PyCharm执行:
makemigrations
migrate #生成数据表

编写view.py
配置urls.py
Html和css文件分离
css文件分离与地址修改

安装mysql-python
下载Mysql包:
下载地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
找到 32位或64位安装包:
MySQL_python-1.2.5-cp27-none-win32.whl
MySQL_python-1.2.5-cp27-none-win_amd64.whl
然后执行:
pip install MySQL_python-1.2.5-cp27-none-win32.whl


验证Django:

python3
import django
django.get_version()

linux命令行中执行命令,创建一个项目:

django-admin.py startproject Djangotest

pip install pysqlite
yum install sqlite*
python manage.py startapp learn #新建一个应用
systemctl stop firewalld.service

在我们创建的项目里修改setting.py文件
ALLOWED_HOSTS = [’’] #在这里请求的host添加了

python manage.py runserver 0.0.0.0:8080

通常情况下,在Django中,一个Model对应数据库中的一个数据表,
这个Model以类的形式表现出来,它包含了一些基本字段及数据的一些行为。
Django以创建类的形式创建数据表。
所有对数据库的操作,都是对类及类的对象进行操作。
不需要写SQL语句。
这就是ORM对象关系映射。
隐藏数据访问细节,把SQL语句都封装起来。

创建一个类,继承models.Model,这个类就是一张数据表,
在类中创建字段,字段就是类里面的属性(变量)。
如:attr = models.CharField(max_length=32,default=‘title’)
命令行中进入manage.py的同级目录,
执行python manage.py makemigrations app (这里的app是指的你的app的名字)
再执行python manage.py migrate
如果是PyCharm,那就执行:
startapp app (这里的app是指的你的app的名字)
makemigrations app
migrate app
然后就可以查看数据库是否做了表结构的改变
查看所执行的sql语句:
sqlmigrate app名 文件名
sqlmigrate message 0001

建超级用户命令createsuperuser

源码安装xadmin:
1、github下载xadmin源码
2、复制到Project目录下
3、修改settings文件:

    INSTALLED_APPS 中添加
    'xadmin',
    'crispy_forms',

4、安装依赖包:

pip install django-crispy-forms django-formtools 
pip install six future httplib2
pip install django-import-export

5、修改urls.py

import xadmin

urlpatterns = [
    url(r'^xadmin/', xadmin.site.urls),
]

6、PyCharm–Debug测试一波

如果要合并目录,比如所有app放到apps目录和extra_apps目录中,,settings配置如下:

......
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
......

一个表中的FOREIGNKEY指向另一个表中的 PRIMARY KEY
django中的models只是建立对表的描述,一个类对应数据库中的一个表------建立目录并记录makemigrations------在数据库中创建表migrate

    user = models.ForeignKey(UserProfile, verbose_name=u"用户")

verbose_name_plural是verbose_name的复数形式
所以verbose_name_plural = verbose_name ,实际上是让复数形式等于原始参数,否则会在名称后面自动加S

在xadmin后端管理界面里,对该Model进行添加操作的时候,报错:list index out of range
原因有两方面:
1、在创建Model的时候,存在类型是DateTimeField的字段
2、input_html报错,Django后续新版本追加了spaceless标签的提交记录
解决方案:找到input_html定义,换一种拆分方式,用“/><”替换掉“\n”,
修改widgets.py原始代码:

input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('\n') if ht != '']

下面为改好的:

input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != '']
input_html[0] = input_html[0] + "/>"
input_html[1] = "<" + input_html[1]

参考链接:
http://blog.csdn.net/yuhan963/article/details/79167743

django error: [Errno 10053]:
现象:反复刷新页面,debug就会报这个错,
google了一下,应该是属于django版本的问题,不影响什么功能。

参考链接:

http://www.runoob.com/django/django-tutorial.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值