Django安装配置
jabgo是一个重量型框架
主要目的:简便快捷开发
Django基于MVC模式,但属于MVT模型.
MVT模式
以下是MVT的流程图解释:
相关命令
命令 | 作用 |
---|---|
mkvirtualenv 虚拟环境名称 -p python版本 | 创建虚拟环境 |
sudo pip install virtualenv | 安装虚拟环境 |
pip install django==1.11.11 | 安装django |
pip list | 查看第三方包 |
django-admin startproject 项目名称 | 创建django项目 |
mkvirtualenv 虚拟环境名称 | 创建虚拟环境 |
rmvirtaulenv 虚拟环境名称 | 删除虚拟环境 |
workon 虚拟环境名称 | 切换虚拟环境 |
deactivate | 退出当前环境 |
which python | 查找python环境 |
python manage.py startapp app名称 | 创建app模块 |
python manage.py makemigration | 生成迁移文件 |
python manage.py migrate | 执行迁移文件 |
python manage.py createsuperuser | 创建管理员 |
python manage.py runserver | 启动运行django项目 |
Django的安装步骤
创建虚拟环境
虚拟环境
项目所需要的第三方软件环境相互隔离
mkvirtualenv django-py3 -p python3
注:创建虚拟环境必须在联网的状态下(不指认python3则默认安装python2)
安装虚拟环境
sudo pip install virtualenv
如果上面不行,则输入下面这行
sudo pip install virtualenvwrapper
如果上面都不行,则需设置支持虚拟化
安装django
创建django项目
项目中的相关文件及文件的作用
启动django
注意:如果不指认端口,默认是8000(端口号在runserver后加)
成功后的界面
在url.py配置链接,配置路由方法一
直接导入:
配置路由方法二(分模块,更常用的方法)
路由可能会过多,所以就有第二种方法,按模块配置路由即分模块再集中.
在项目所在的同名文件夹的urls里面配置include(将各个模块的URL加载)
在各个模块的URL里面配置URL-VIEWS
模块相关文件及其作用
在
创建模块之后,注册子模块,注册到同名文件夹的setting中,不配置则无法使用
还有配置python环境,修改为虚拟环境下的python:
成功后的页面
设置数据库并交互
如果你使用Django自带的数据库,这一步不需要
查找配置文件
在项目的同名文件夹下的setting.py文件内寻找下面地址在浏览器打开
找到下面文件复制
并粘贴在setting.py 文件Database下
把数据库配置成你自己的数据库信息
接下来,在项目同名文件夹下的__init_里面配置数据库的驱动信息
生成迁移文件
执行迁移文件
创建超级管理员
修改语言
html加载数据库的内容
同上文操作,在urls.py添加
urlpatterns = [
url(r'^index/', index),
url(r'^userinfo/', userinfo),
url(r'^show_userinfos/', show_userinfos)
]
在views.py添加:
def show_userinfos(request):
# 查找所有的用户信息
from user.models import UserInfo
try:
# 取出所有的数据
# data = UserInfo.objects.all()
print('这里打印的是所有的用户信息')
# data = UserInfo.objects.get(id=1) # 一条数据
# data = UserInfo.objects.count() # 计数
# 查找id不等于1的userinfo
# __gt代表大于 __lt代表小于 __lte小于等于
# 这些都返回列表对象
# data = UserInfo.objects.filter(id__gt=1)
# 查找带 小 的
# data = UserInfo.objects.filter(name__contains='小')
# 查找姓王的人
data = UserInfo.objects.filter(name__startswith='王')
except:
data = '不存在'
finally:
pass
print(data)
# context是构造上下文,网页需要的数据,必须是字典结构
context = {'datas': data}
return render(request, 'showuserinfos.html', context)
在文件夹templates创建一个新的网页showuserinfo.html:
里面有新的语言来提取数据库内容,要另外学习
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>userinfos</h1>
<ul>
{{ datas }}
{# {% for obj in datas %}#}
{# <li>{{ obj.name }}</li>#}
{# <li>{{ obj.phone }}</li>#}
{# <li>{{ obj.addkey }}</li>#}
{# {% endfor %}#}
</ul>
</body>
</html>
manage.py shell测试
进入环境以及文件夹之后,可以shell调试,记住写完之后要save():
>>> from user.models import *
>>> add = AddressInfo()
>>> add.add = '广州'
>>> add.save()
>>> user=UserInfo()
>>> user.name='白小姐'
>>> user.phone=18814882311
>>> user.addkey=add
>>> user.save()
>>>
>>> UserInfo.objects.all()
>>> add.userinfo_set.all()
>>> from user.models import AddressInfo
>>> AddressInfo.objects.create(add='深圳')
<AddressInfo: 深圳>
>>> AddressInfo.objects.all()
<QuerySet [<AddressInfo: 苏州>, <AddressInfo: 杭州>, <AddressInfo: 上海>, <AddressInfo: 广州>, <AddressInfo: 深圳>]>
这里外键的添加方式是一个实例对象,即直接对象赋值给外键,
UserInfo.objects.all() // 这个是查询所有
add.userinfo_set.all() // 根据对象的外键查询
AddressInfo.objects.create(add=‘深圳’) // 添加表属性