系统环境:
12.04 ubuntu x64
python 2.7.3
Django 1.9.5 (python 3默认安装了Django)
IP:192.168.209.33
一、pip安装
下载地址
https://bootstrap.pypa.io/get-pip.py
安装命令
[root@ubuntu ~]#python get-pip.py
会连带下载setuptools和wheel,可以通过指定参数不下载
--no-setuptools
--no-wheel
二、Django安装
通过pip安装python包
[root@ubuntu ~]#pip install Django==1.9.5
通过python检查
三、开发的准备工作
Django 1.9以上才可以
1. 检查Django
[root@ubuntu ~]#python -c "import django;print(django.get_version())"
2. 创建工作目录并创建项目(避免命名,不要用django和test)
错误1:“command not found: django-admin”
mysite/外部:
用来连接项目,不要取跟django相关的名称
manage.py:
用于与Django项目交互的命令行工具
mysite/内部:
其实是一个python包,在调用的时候可以使用,例如 mysite.urls
mysite/_init_.py:
一个空的文件,用于告诉Python这个目录应该当作python包的形式
mysite/settings.py:
用于设置Django项目
mysite/urls.py:
提供URL连接Django项目
mysite/wsgi.py:
为Django项目提供一个WSGI web服务器的入口
3. 启用开发服务
[root@ubuntu ~/python_django/mysite]#python manage.py runserver
暂时忽略更新数据库的警告,退出服务按Ctrl-c
通过http://127.0.0.1:8000访问Django自带的轻量级web服务器
这个web服务器,只为了Django的项目开发,不要用于web服务运用
可以使用如下命令,修改服务器的访问IP和端口,默认是127.0.0.1:8000
python manage.py runserver 0.0.0.0:8080
允许所有IP访问
python manage.py runserver 0.0.0.0:8000
这个开发服务器在不重启情况下,会自动更新加载python代码。但增加文件类操作,就需要重启服务器
四、开发一个polls调查应用(一)
初识,新建一个简单的url views
在manage.py所在目录下
[root@ubuntu ~/python_django/mysite]#python manage.py startapp polls
Django会自动创建目录结构
编写view,
创建polls/urls.py。在url的任意匹配下,调用views下的index函数,name为url的名字
修改项目url指向连接到polls下的url,修改/mysite/urls.py。在url/polls下,调用polls包下的urls
查看
6. url函数:regex和view参数,kwargs和name参数
regex:
r''用于正则匹配,但不支持$末尾字符串匹配,也不会寻找GET、POST参数和域名。
例如:https://www.example.com/myapp/?page=3,只会匹配myapp/
view:
当Django匹配到对应目录时,会调用该目录的view函数
kwargs:
任意的键盘参数将会传递给view函数
name:
命名url
五、开发一个polls调查应用(二)
设置数据库,创建模块,Django管理
Database setup
关于修改默认数据库
Django默认设置数据库为SQLite这款轻量级数据库,但你也可以选择使用其他数据库。
修改NAME,提前新建数据库,用户,密码,主机都要指定。即还要确保mysite/settings.py具有新建数据库的权限。
修改时区
vim settings.py
默认是UTC全球标准时间
INSTALLED_APPS 保存所有Django应用程序,默认包含如下
INSTALLED_APPS = [
'django.contrib.admin', # 管理网站
'django.contrib.auth', #身份验证系统
'django.contrib.contenttypes', #内容类型的框架
'django.contrib.sessions', #会话框架
'django.contrib.messages', #消息框架
'django.contrib.staticfiles', #管理静态文件的框架
]创建数据库
[root@ubuntu ~/python_django/mysite]#python manage.py migrate
Creating && Activating models
创建模块
Question类新建提问文件,日期文件;Choice类新建选择文件,
[root@ubuntu ~/python_django/mysite/polls]#vim models.py
激活模块
[root@ubuntu ~/python_django/mysite/mysite]#vim settings.py
增加模块,会在polls/目录下新建migrations目录
[root@ubuntu ~/python_django/mysite]#python manage.py makemigrations polls
输出模块即将的操作,并没有创建模块表,只是把操作输出出来,以供检查
[root@ubuntu ~/python_django/mysite]#python manage.py sqlmigrate polls 0001
1.这段输出会取决于使用的数据库,这里默认的SQLite
2.自动创建表的名称:appname_modelname
3.自动增加id为主键,serial自增
4.一般用文件名_id作为外键,并不强制执行
应用模块,使用migrate命令,更新数据库,创建模块表
[root@ubuntu ~/python_django/mysite]#python manage.py migrate
创建模块:
在models.py中修改模块
使用命令python manage.py makemigrations为模块去创建migrations目录
使用命令python manage.py migrate在数据库中去应用更改的模块
之所以把各个步骤拆开,是为了修改和应用分隔,更容易开发和使用
Playing with the API
1. 调用python的shell终端
[root@ubuntu ~/python_django/mysite]#python manage.py shell
不用直接python打开终端,是因为manage.py设置DJANGO_SETTINGS_MODULE变量为mysite/settings,保证路径
djangosetup()
报AttrubuteError 需要检查你的Django版本
2. 在shell中使用API
Question, Choice Questionobjectsall() timezoneq Question(question_text, pub_datetimezonenow())qsave()qidqquestion_textqpub_dateqquestion_text qsave()Questionobjectsall()
3. 增加_str_方法,改变Question.objects.all()的输出
polls/models.py
使用双下划线定义的API,添加的__str__项目会自动管理,方便交互
自定义方法:
polls/models.py
4. 打开新的python shell
:
Introducing the Django Admin
Django自动化生成一个管理网站接口
创建管理用户
[root@ubuntu ~/python_django/mysite]#python manage.py createsuperuser
开启开发服务器,打开http://127.0.0.1:80000/admin
[root@ubuntu ~/python_django/mysite]#python manage.py runserver
Make the poll app modifiable in the admin
app不显示在管理网站主页上,这里需要告诉管理网站,Question项目有管理接口。编辑polls/admin.py
polls/admin.py
from django.contrib import adminfrom .models import Questionadmin.site.register(Question)
Explore the free admin functionality
点击下What's up?
可以忽略原来设置参数,直接在页面修改。点击History查看修改历史
六、开发一个polls调查应用(三)