参考书籍:《python编程从入门到实践》——【美】Eric Matthess
下面直接用Django进行编写一个名为“学习笔记”的web应用程序,从中认识到它的作用和如何使用。
项目名称:学习笔记
作用:让用户能够记录感兴趣的主题,并在学习每个主题的过程中添加日志条目。“学习笔记”的主页对这个网站进行描述,并邀请用户注册或登录。用户登录后,就可以创建新主题、添加新条目以及阅读既有的条目。
1、建立虚拟环境
要使用Django首先要建立虚拟环境,Django仅在虚拟环境处于活动状态下时才能使用。
关于Python3中venv虚拟环境:
Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv。该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包。他最大的好处是,可以让每一个python项目单独使用一个环境,而不会影响python系统环境,也不会影响其他项目的环境。
优点:
1、使不同应用开发环境独立
2、环境升级不影响其他应用,也不会影响全局的python环境
3、防止系统中出现包管理混乱和版本冲突
首先为新的项目建立一个目录,命名为learning_log,再在终端切换到该目录下,创建一个虚拟环境
(我使用的是python3.6.5)
learning_log$ python -m venv ll_env
learing_log$
(如果不能成功的使用venv模块就要安装virtualenv)
2、激活虚拟环境
Linux系统:
learning_log$ source ll_env/bin/activate
(ll_env)learning_log$
#windows系统
learning_log$ ll_env\Scripts\activate
(ll_env)learning_log$
要停止使用虚拟环境可使用命令:deactivate
3、安装Django
因为在虚拟环境中,所有系统的命令都一样,不需要区分是linux还是Windows。
(ll_env)learn_logs$ pip install Django==1.11(这里安装的是1.11版本)
4、在Django中创建项目
使用命令:django-admin.py startproject (工程名)来创建项目
(ll_env)learning_log$ django-admin.py startproject learning_log .
(ll_env)learning_log$ ls
#Windows为 learning_log$ dir
(ll_env)learning_log$ ls learning_log
#Windows为 learning_log$ dir learning_log
这个命令的末尾的句点让新项目使用合适的目录结构,这样开发完成后可轻松地将应用程序部署到服务器,否则在部署应用程序的时候将遭遇一些配置问题,如果忘记了这个句点,可以将创建的文件和文件夹删除(ll_env除外),再重新运行这个命令。
自动创建的manage.py文件是一个简单的程序,它接受命令并将其交给Django的相关部分去运行。
其中 learning_log目录下包含了4个文件:
__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包
settings.py: 该 Django 项目的设置/配置,指定Django如何与你的系统交互以及如何管理项目。
urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。告诉Django应该创建哪些网页来响应浏览器请求。
wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目,帮助Django提供它创建的文件。
5、创建数据库
在使用Django开发的项目中,我们不需手动在数据库中创建表,只需要执行Django自带的数据库迁移的命令,就可以把创建的模型在数据库生成对应的数据库表。
(ll_env)learning_log$ python manage.py migrate # 执行生成的迁移文件并同步到数据库
首次执行migrate命令时,将让Django确保数据库与项目的当前状态匹配,在使用SQLite的新项目中首次执行这个命令时,Django将新建一个数据库。
6、查看项目
核实Django是否正确的创建了项目,执行命令:python manage.py runserver
然后在浏览器中输入URl就可以看到下面的页面,这个是Django创建的,表示到目前为止一切都正常。
注:如果出现错误消息:That port is already in use。请执行命令:python manage.py runserver 8001,让Django使用另一个窗口,如果也不行,一直重复并逐渐增大端口号,直到找到可用的端口。
可以指定ip:
python manage.py runserver ip:8000
如果报错:Error: That IP address can't be assigned to.
字面理解这句话的意思就是:该IP地址不能被分配。
这种情况下,我们有三种解决方案:
1、查看settings.py文件的ALLOWED_HOSTS是否配置了该ip地址,如果没有的话就加上。开发时,我建议把0.0.0.0 、127.0.0.1 、localhost这些都添加上去。
2、如果使用的是服务器的话,请在服务器控制台的防火墙设置里,查看是否添加了8000这个端口(或者是您自己指定的启动端口)。
3、如果上述两种方法均不可以,那么就: python manage.py runserver 0:8000
没错,直接把启动的ip设置为0,然后问题就解决了,配置好防火墙之后,就可以直接用域名或者是服务器ip访问了。
要关闭这个服务器的话用:Ctrl+C即可