Django是一个开放源代码的Web应用框架,由Python写成。
Django是一个基于MVT构造的框架:模型(Model)、模板(Template)和视图(views)。
核心:解耦
目的:高内聚,低耦合
模型(Model),即数据存取层:处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即业务逻辑层:处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即表现层:存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。
框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作。在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情。
下面我们在Linux里,来使用pycharm和mysql数据库,来进行一次简单的数据库交互。
1.首先打开终端创建一个虚拟环境(虚拟环境的好处在于可以随意玩,并且可以只搭建自己用得到的部分)
创建一个python3虚拟环境语句:
(mkvirtualenv -p python3 虚拟环境的名字 )
mkvirtualenv -p python3 waterDB_django
'''
#退出虚拟环境命令:deactivate
#查看虚拟环境: workon
#开启虚拟环境命令: workon waterDB_django
#删除虚拟环境: rmvirtualenv 虚拟环境的名字
'''
在虚拟环境里安装Django: pip install django==1.8.4
2.创建项目
创建项目的语句(最好在虚拟环境里安装):
django-admin startproject watercar
#watercar是项目名字
#下列是生成项目后自动配置成的:
# manage.py :项目管理文件,用来管理项目
# watercar :项目同名文件夹
# ├── __init__.py :表示我们这个文件可以被使用
# ├── settings.py :配置文件(数据库,邮箱等配置)
# ├── urls.py :项目的所有地址配置
# └── wsgi.py :就是我们Django 小型服务器入口
3.创建模块:
在(waterDB_django) python@ubuntu:~/Desktop/watercar$ 里创建
#(waterDB_django)是加载了创建的虚拟环境。
#python@ubuntu:~/Desktop/watercar$ 是进入项目里面
创建模块语句:python manage.py startapp user
#user是模块名字
接下来在pycharm里打开watercar,在同名文件里的setting里在INSTALLED_APPS里添加一句:['user']
在pycharm里添完user后,模块与项目就产生了关联
可以运行服务器: python manage.py runserver (+端口名字)
打开地址,然后网页显示:it is worked
#端口名字不写的话,默认为端口:8000
4.连接数据库:
在pycharm里的项目同名文件夹下的setting里:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'waterDB', #数据库名字,必须先在MySQL里新建一个waterDB数据库
'USER':'root', #权限
'PASSWORD':'mysql', #密码
'PORT':3306, #默认3306端口
'HOST':'localhost' #本地机
}
}
5.用pycharm控制数据库-----建表:
在模块user的model里面:
class UserInfo(models.Model):
user_name = models.CharField(max_length=20)
password = models.CharField(max_length=20)
email = models.CharField(max_length=20)
phone = models.IntegerField()
#这个时候数据库里表还没有生成,因为我们还没有把表迁移进去
6.安装pymysql 模块,并且在项目的同名文件夹下的————init.py文件下添加语句:
import pymysql
pymysql.install_as_MySQLdb()
7.迁移(建表):
生成迁移文件:
python manage.py makemigrations
执行迁移文件:
python manage.py migrate
这个时候把表迁移进去了,可以在终端打开MySQL数据库查看
#orm查询语句:
# 1查询所有
# UserInfo.objects.all()
# 2查询指定对象
# obj1 = UserInfo.objects.get(id=1)
# 3查询指定字段
# obj1 = user_name
# 4修改指定字段的值
# obj1.password = 54321
# 5查询老张所拥有的地址(关联):
# obj1 = UserInfo.objects.get(id=2)
# obj1.useraddress_set.all()
8.进入Django自带的服务器:
在终端(waterDB_django) python@ubuntu:~/Desktop/watercar$ :
先创建超级管理员:
python manage.py createsuperuser;
#name=用户名 #用户名要记得,很重要
#password=密码 #密码要记得,很重要
再运行服务器:
python manage.py runserver;
#运行服务器
然后在网页上输入它生成的地址,输入用户名和密码就进去了:
例如:http://127.0.0.1:8000/admin
9.配置Django后台更符合我们使用:
界面使用中文,在项目同名文件的setting下修改:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
注册模块到admin:
在模块user的admin里:
from user.models import UserInfo
class UserInfoAdmin(admin.ModelAdmin):
list_display = ['id','user_name','password','email','phone']
admin.site.register(UserInfo,UserInfoAdmin)
使用表userinfo时展示其名字:
在模块user的model文件,里面的userinfo类里,加一句:
def __str__(self):
return self.user_name
10.使用urls:
10.1首先我们要把user的urls注册到项目的同名文件的urls.py文件里:
在urls里的urlpatterns里面添加:
url(r'^',include('user.urls')) #就是关联一下路径,在模块user里的urls文件,此时文件还没有创建,下面就来创建它
10.2创建user的urls.py文件:
在urls里面写上:
from django.conf.urls import include, url
from user import views
urlpatterns = [
# 127.0.0.1/index
url(r'^index$',views.index),
]
10.3根据url地址请求,创建对应的视图函数,注意点:必须有一个参数来接收请求,必须有抛出一个返回结果
在模块user的views里面写入:
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('欢迎')
然后在网页上输入http://127.0.0.1:8000/index 就可以看到‘欢迎’了