django学习记录
在学习python过程中,有段时间想要开发网站,于是接触了django。django是用来编写web网站的一个非常给力的框架,给力的地方在于,它使用的是MVC,即Model,view,control,模型,视图,控制器。确切的说是MTV,即Model,Template,View,模型,模板,视图。django的工作原理是从setting里找到URL存放的地方,在urls里面匹配url请求,由对应的视图函数进行处理,视图函数根据需要从模型里查询数据返回一个填充了数据的模板。它把各个部分分隔开,让开发者能更方便的开发网站。还有它提供了站点管理,输入/admin即可登录站点管理系统,不过要先创建一个超级用户。站点管理可以对数据进行添加删除等操作,非常省事。这只是我接触到的django一小部分,还有很多地方值得探究。
关于django的学习,可以查看django官方文档,1.9中文版貌似还没有,可以看1.8的,然后就是也可以参考django book2链接地址http://docs.30c.org/djangobook2/
学习完基础知识之后就是实战了,基本上都是写个博客什么的,网上有很多教程我参考的是http://www.dannysite.com/blog/233/,下面简要记录下开发流程。
django安装完成后,切换到所要存放项目的目录下,在命令行输入django-admin startproject 项目名 来创建一个新项目。(创建项目)
创建好项目后,切换到当前项目下,输入python manage.py runserver启动服务。(启动服务,可省略)
接着就是连接数据库,默认使用的是SQLite,如果只是小型项目的话,sqlite就够了,如果要用其他数据库,到setting里面修改即可。(修改数据库配置)
默认使用sqlite
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
改成mysql
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql',#设置mysql 'NAME': 'test',#数据库名称 'USER': 'root',#用户名 'PASSWORD': 'xxxx',#密码 'HOST': '127.0.0.1',#数据库所在服务器ip,本地服务器127.0.0.1 'PORT': '3306',#端口号,一般都是3306 } }
输入python manage.py migrate来创建一些django自身依赖表(让django数据库初始化)
接着输入python manage.py startapp app名称来创建自己的一个app项目(创建新的app),记得在setting的INSTALL_APP里面加上这个app。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'appname', ]
然后就是开发的重点了,一共是三步。
django采用的是MVC model-view-control即模型,视图,控制器。确切的说是MTV model,template,view即模型,模板,视图
这三个部分互相独立,你可以按你喜欢的方式来进行开发。模型指的是数据库的建立,在models.py文件中建立,django不直接使用sql命令,简化了很多步骤。模板指的是在template下的html模板文件,最终用来显示的文件。视图指的是views.py中的业务逻辑和urls.py中的url映射,通过url映射,使用views中的函数来处理业务逻辑,然后返回一个template中的模板。
打开models.py写好模型后,用python manage.py makemigrations app名称让django感应到数据库的变化创建相应的sql命令,在执行python manage.py migrate让django执行sql命令创建数据库所需的表。如果你想要使用django自带的后台管理系统,记得去admin.py引入创建的models,用admin.site.register()注册你的新创建的表,否则后台管理系统不会出现这些表。
接下来可以用django的站点管理来管理你的数据库,执行python manage.py createsuperuser来创建超级用户,输入用户名,邮箱,密码即可创建成功.创建成功后python manage.py runserver打开浏览器输入127.0.0.1:8000/admin来登录站点管理数据库
站点默认是英文的,如果想让站点显示中文,只要在setting.py里设置LANGUAGE_CODE='zh-Hans'
创建好测试的数据后,开始写视图函数,写完后,在项目根目录下创建一个templates文件,将视图函数中用到的模板放在里面,在setting里面的TEMPLATES的DIRS里面添加templates/,否则会报错,找不到模板。最后就是写url来匹配视图函数,记得引入视图函数,大功告成。
下面介绍下manage.py基本命令
1. 新建一个 django project
windows下
python django-admin.py startproject project-name
linux下
django-admin startproject project-name
2.新建一个app
python manage.py startapp app-name
3.同步数据库
python manage.py makemigrations app-name
python manage.py migrate app-name
4.
使用开发服务器
python manage.py runserver
# 当提示端口被占用的时候,可以用其它端口:
python manage.py runserver 8001
python manage.py runserver 9999
(当然也可以
kill
掉占用端口的进程)
# 监听所有可用 ip (电脑可能有一个或多个内网ip,一个或多个外网ip,即有多个ip地址)
python manage.py runserver 0.0.0.0:8000
# 如果是外网或者局域网电脑上可以用其它电脑查看开发服务器
# 访问对应的 ip加端口,比如 http://172.16.20.2:8000
5. 清空数据库
python manage.py flush
6. 创建超级管理员
python manage.py createsuperuser
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
# 修改 用户密码可以用:
python manage.py changepassword username
7. 导出数据 导入数据
python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json
8. Django 项目环境终端
python manage.py shell
9. 数据库命令行
python manage.py dbshell
Django 会自动进入在settings.py中设置的数据库,如果是 MySQL 或 postgreSQL,会要求输入数据库用户密码。
10. 更多命令
终端上输入 python manage.py 可以看到详细的列表,在忘记子名称的时候特别有用。